Мульти-сплит в Python - PullRequest
       4

Мульти-сплит в Python

2 голосов
/ 09 августа 2010

Как бы я разделил строку на два противоположных значения? Например, ( и ) являются «разделителями», и у меня есть следующая строка:

Wouldn't it be (most) beneficial to have (at least) some idea?

Мне нужен следующий вывод (в виде массива)

["Wouldn't it be ", "most", " beneficial to have ", "at least", " some idea?"]

Ответы [ 4 ]

13 голосов
/ 09 августа 2010

re.split ()

s = "Wouldn't it be (most) beneficial to have (at least) some idea?"
l = re.split('[()]', s);
1 голос
/ 09 августа 2010

В данном конкретном случае звучит так, что было бы более целесообразно сначала разбить на пробелы, а затем обрезать скобки.

out = []
for element in "Wouldn't it be (most) beneficial to have (at least) some idea?".split():
  out.append(element.strip('()'))

Хм ... перечитывая вопрос, вы хотели сохранить некоторыеиз пространств, так что, возможно, нет :), но держать его здесь по-прежнему.

0 голосов
/ 09 августа 2010

Используйте регулярное выражение, соответствующее обоим () символам:

import re
re.split('[()]', string)
0 голосов
/ 09 августа 2010

Вы можете использовать разделение регулярного выражения:

import re
pattern = re.compile(r'[()]')
pattern.split("Wouldn't it be (most) beneficial to have (at least) some idea?")
["Wouldn't it be ", 'most', ' beneficial to have ', 'at least', ' some idea?']
...