#python #string #split
#python #строка #разделение
Вопрос:
У меня есть строка, подобная;
'[abc] [def] [zzz]'
Как я мог бы разделить его на три части:
abc
def
zzz
Комментарии:
1. Удалите скобки из строки, а затем выполните обычное разделение на пробелы.
2. Ах, но что, если следующая строка
'[abc def] [zzz]'
?
Ответ №1:
Вы можете использовать re.findall
:
>>> from re import findall
>>> findall('[([^]]*)]', '[abc] [def] [zzz]')
['abc', 'def', 'zzz']
>>>
Весь синтаксис регулярных выражений, используемый выше, объясняется в ссылке, но вот краткая разбивка:
[ # [
( # The start of a capture group
[^]]* # Zero or more characters that are not ]
) # The end of the capture group
] # ]
Для тех, кто хочет решение без регулярных выражений, вы всегда можете использовать понимание списка и str.split
:
>>> [x[1:-1] for x in '[abc] [def] [zzz]'.split()]
['abc', 'def', 'zzz']
>>>
[1:-1]
снимите квадратные скобки с каждого конца x
.
Комментарии:
1. Использование
[^]]*
вместо.*?
значительно быстрее (я вижу улучшение в 3 раза с более длинными группами и строками) (понимание списка в любом случае кажется самым быстрым …)
Ответ №2:
Другой способ:
s = '[abc] [def] [zzz]'
s = [i.strip('[]') for i in s.split()]
Комментарии:
1. зачем вам нужно указывать
' '
в разделении?