我正在尝试在换行符上拆分字符串(适用于Windows,OS X和Unix文本文件的换行符)。如果这些中有任何连续性,我也想分开,而不是在结果中包含任何。
因此,在拆分以下内容时:
"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']
我应该使用什么正则表达式?
答案 0 :(得分:21)
如果行的开头或结尾没有空格,则可以使用不带参数的line.split()
。它将删除双打。
。
如果没有,您可以使用[a for a a.split("\r\n") if a]
。
编辑:str
类型也有一个名为“splitlines”的方法。
"Foo\r\n\r\nDouble Windows\r\rDouble OS X\n\nDouble Unix\r\nWindows\rOS X\nUnix".splitlines()
答案 1 :(得分:7)
用于此目的的最简单模式是r'[\r\n]+'
,您可以将其称为“一个或多个回车符或换行符”。
答案 2 :(得分:4)
re.split(r'[\n\r]+', line)
答案 3 :(得分:1)
>>> 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']
答案 4 :(得分:0)
注意模式的贪婪规则:
pattern = re.compile(r'(\r\n){2,}|(\n\r){2,}|(\r){2,}|(\n){2,}')
paragraphs = pattern.split(text)