Split string with multiple delimiters in Python [duplicate]
Разделить строку с несколькими разделителями в Python
Я нашел несколько ответов в Интернете, но у меня нет опыта работы с регулярными выражениями, которые, я считаю, здесь необходимы.
У меня есть строка, которую нужно разделить либо на ';', либо на ', ' То есть это должна быть либо точка с запятой, за которой следует пробел. Отдельные запятые без завершающих пробелов следует оставить нетронутыми
Если вы собираетесь часто разделять строку, используя одни и те же разделители, заранее скомпилируйте свое регулярное выражение, как описано, и используйте RegexObject.split.
Если вы хотите оставить исходные разделители в строке, вы можете изменить регулярное выражение, чтобы вместо этого использовать утверждение lookbehind:
>>> import re >>> delimiters = "a", "...", "(c)" >>> example = "stackoverflow (c) is awesome... isn't it?" >>> regex_pattern = '|'.join('(?<={})'.format(re.escape(delim)) for delim in delimiters) >>> regex_pattern '(?<=a)|(?<=\\.\\.\\.)|(?<=\\(c\\))' >>> re.split(regex_pattern, example) ['sta', 'ckoverflow (c)', ' is a', 'wesome...', " isn't it?"]
(замените ?<= на ?=, чтобы прикрепить разделители к правой стороне, а не к левой)
Ответ 4
В ответ на ответ Джонатана выше, похоже, это работает только для определенных разделителей. Например: