【问题标题】:Remove 
 from python string消除 来自python字符串
【发布时间】:2009-11-18 22:29:22
【问题描述】:

当您在 Python 中通过popen 运行某些内容时,结果来自缓冲区,每行末尾带有回车符 (13) 的 CR-LF 十进制值。如何从 Python 字符串中删除它?

【问题讨论】:

  • 不支持 'b' 模式标志来打开二进制模式,这可能会摆脱 \r 开始。
  • 二进制模式将是 保留 \r 的模式。文本模式可能会摆脱它。
  • 实际上,'b' 会强制保留'\r'(如果它被支持——没检查)。

标签: python popen newline


【解决方案1】:

你可以这样做

s = s.replace('\r\n', '\n')

用 NL 替换所有出现的 CRNL,这似乎是您想要的。

【讨论】:

  • 还需要添加 .rstrip("\r\n") 用于尾随 CRLF
【解决方案2】:
buffer = "<text from your subprocess here>\r\n"
no_cr = buffer.replace("\r\n", "\n")

【讨论】:

    【解决方案3】:

    如果它们位于字符串的末尾,我建议使用:

    buffer = "<text from your subprocess here>\r\n"
    no_cr = buffer.rstrip("\r\n")
    

    您也可以使用不带参数的 rstrip() 来删除空格。

    【讨论】:

      【解决方案4】:

      replace('\r\n','\n') 应该可以工作,但有时它就是不行。多奇怪。相反,您可以使用它:

      lines = buffer.split('\r')
      cleanbuffer = ''
      for line in lines: cleanbuffer = cleanbuffer + line
      

      【讨论】:

        【解决方案5】:

        实际上,您可以简单地执行以下操作:

        s = s.strip()
        

        这将删除任何无关的空格,包括 CR 和 LF,前导或尾随字符串。

        s = s.rstrip()
        

        做同样的事情,但只是在字符串后面。

        即:

        s = '  Now is the time for all good...  \t\n\r   "
        s = s.strip()
        

        s now 包含“现在是万事大吉的时候了……”

        s = s.rstrip()
        

        s now 包含 '现在是万事大吉的时候了...'

        请参阅http://docs.python.org/library/stdtypes.html 了解更多信息。

        【讨论】:

          【解决方案6】:

          你也可以s = s.replace('\r', '')

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-02-14
            • 2010-10-13
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多