【问题标题】:Splitting a string separated by "\r\n" into a list of lines?将由“\r\n”分隔的字符串拆分为行列表?
【发布时间】:2010-07-27 15:09:04
【问题描述】:

我正在从子进程模块的通信方法中读取一些数据。它以由“\r\n”s 分隔的大字符串形式出现。我想将其拆分为行列表。这在python中是如何执行的?

【问题讨论】:

  • 当您阅读string.split() 时,您发现了什么?你试过什么?你用的是什么教程?

标签: python string


【解决方案1】:

对字符串使用 splitlines 方法。

来自文档:

str.splitlines([保持]) 返回字符串中的行列表,在行边界处中断。 换行符不包括在 结果列表,除非 keepends 是 给定的和真实的。

不管操作系统如何,无论行尾是“\r\n”、“\r”还是“\n”,这都会做正确的事情。

NB 以 "\n\r" 结尾的行也会被拆分,但你会在每行之间得到一个空字符串,因为它会将 "\n" 视为有效行结尾,而将 "\r" 视为下一行。例如

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

【讨论】:

  • 请注意,“foo\r\nbar”.splitlines() 返回 ['foo', 'bar']。 CRLF/CR/LF 都被识别,但 LFCR 被视为 2 行。
【解决方案2】:

查看文档以了解字符串方法。特别是拆分方法。

http://docs.python.org/library/stdtypes.html#string-methods

【讨论】:

    【解决方案3】:
    s = re.split(r"[~\r\n]+", string_to_split)
    

    这将为您提供 s 中的字符串列表。

    【讨论】:

    • 不过,如果你认为'a\n\nb' 应该被拆分成三个字符串('a''''b'),这将失败。
    • 没错,这样会忽略空行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多