将以"\r\n"分隔的字符串拆分为行列表?

28

我正在使用subprocess模块的communicate方法读取一些数据。它以"\r\n"分隔的大字符串形式呈现。我想把它拆分成行列表。在Python中如何执行此操作?


1
当你查阅 string.split() 的资料时,你找到了什么?你尝试了什么?你使用的是哪个教程? - S.Lott
3个回答

55

使用字符串上的splitlines方法。

从文档中可以得知:

str.splitlines([keepends]) 返回一个列表,其中包含字符串中的每一行,并在行界限处进行分割。 如果给出并且为真,则结果列表不包括换行符。

无论操作系统使用的是"\r\n"、"\r"还是"\n",这种方法都能正确处理字符串中的换行符。

注意,"\n\r"作为行尾也会被识别,但每个行之间会有一个空字符串,因为它会将"\n"视为有效的行尾,而将"\r"视为下一行的结束符。例如:

>>> "foo\n\rbar".splitlines()
['foo', '', 'bar']

1
请注意,"foo\r\nbar".splitlines() 返回 ['foo', 'bar']。CRLF/CR/LF 都被识别,但 LFCR 被视为 2 行。 - Curtis Yallop

2

1
s = re.split(r"[~\r\n]+", string_to_split)

这将会给你一个字符串列表 s。


2
虽然,如果你认为'a\n\nb'应该被分成三个字符串('a''''b'),那么这种方法会失败。 - Chris B.
1
没错,这将忽略空行。 - tkerwin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接