Regex, чтобы разделить на последовательности символов новой строки - PullRequest
9 голосов
/ 08 апреля 2010

Я пытаюсь разбить строку на символы новой строки (для символов новой строки в Windows, OS X и Unix). Если они есть, я тоже хочу разделить их и не включать в результат any .

Итак, для при разбиении следующее:

"Foo\r\n\r\nDouble Windows\r\rDouble OS X\n\nDouble Unix\r\nWindows\rOS X\nUnix"

Результат будет:

['Foo', 'Double Windows', 'Double OS X', 'Double Unix', 'Windows', 'OS X', 'Unix']

Какое регулярное выражение я должен использовать?

Ответы [ 5 ]

22 голосов
/ 08 апреля 2010

Если в начале или конце строк нет пробелов, вы можете использовать line.split() без аргументов. Это удалит двойники. , Если нет, вы можете использовать [a for a a.split("\r\n") if a].

РЕДАКТИРОВАТЬ: тип str также имеет метод, называемый "splitline".

"Foo\r\n\r\nDouble Windows\r\rDouble OS X\n\nDouble Unix\r\nWindows\rOS X\nUnix".splitlines()

7 голосов
/ 08 апреля 2010

Самый простой шаблон для этой цели - r'[\r\n]+', который вы можете произнести как «один или несколько символов возврата каретки или перевода строки».

4 голосов
/ 08 апреля 2010
re.split(r'[\n\r]+', line)
1 голос
/ 08 апреля 2010
>>> s="Foo\r\n\r\nDouble Windows\r\rDouble OS X\n\nDouble Unix\r\nWindows\rOS X\nUnix"
>>> import re
>>> re.split("[\r\n]+",s)
['Foo', 'Double Windows', 'Double OS X', 'Double Unix', 'Windows', 'OS X', 'Unix']
0 голосов
/ 17 сентября 2015

Обратите внимание на правила жадности для шаблонов:

pattern = re.compile(r'(\r\n){2,}|(\n\r){2,}|(\r){2,}|(\n){2,}')
paragraphs = pattern.split(text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...