正则表达式分割连续换行符

10 投票
5 回答
20358 浏览
提问于 2025-04-15 21:21

我想把一个字符串按照换行符来分割(要考虑到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']

我应该使用什么正则表达式呢?

5 个回答

5
re.split(r'[\n\r]+', line)

当然可以!请把你想要翻译的内容发给我,我会用简单易懂的语言为你解释清楚。

11

这个用途最简单的模式是 r'[\r\n]+',可以理解为“一个或多个回车符或换行符”。

24

如果行的开头和结尾没有空格,你可以用 line.split() 这个方法,它会自动去掉多余的空格。

如果有空格的话,你可以用 [a for a in line.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() 这个代码会把字符串按行分开。

撰写回答