2010-08-08 6 views
2

Как бы я разделил строку на два противоположных значения? Например ( и ) являются "deliminators" и у меня есть следующая строка:Multi-split в Python

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

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

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

В Python они более известны как «списки», а не массивы. Существуют также «dicts», эквивалентные ассоциативным массивам PHP. – quantumSoup

+0

@quantum: Спасибо. Я знаю «правильный» термин, но это то же самое, что сказать «показать таблицы» в Монго. У Монго нет столов, но он с радостью принимает его и показывает вам все коллекции. –

+2

@Josh K: Нет, списки списков массивов просто неверны. Это похоже на вызов велосипеда на машине, потому что у обоих есть колеса. –

ответ

13

re.split()

s = "Wouldn't it be (most) beneficial to have (at least) some idea?" 
l = re.split('[()]', s); 
+0

+1 для того, чтобы не изобретать колесо. – muhuk

+0

приятно и просто :) –

0

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

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?'] 
+3

Вам не нужно скрывать '()' внутри класса символов. – kennytm

0

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

import re 
re.split('[()]', string) 
1

В данном случае, кажется, что это имело бы больше смысла для первого разделения на пространстве, а затем обрезать скобки.

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

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

+0

Я бы предпочел * сохранить пробелы. –

Смежные вопросы