从Python字符串中删除

3
当你在Python中使用popen运行一些东西时,结果会从缓冲区中带有每行末尾的回车符(13的CR-LF十进制值)。如何从Python字符串中删除此内容?

popen支持'b'模式标志以打开二进制模式,这可能会首先消除\r,你可以尝试一下。 - tyranid
1
二进制模式是保留\r的模式。文本模式可能会将其丢弃。 - Ned Batchelder
实际上,'b' 会强制保留 '\r'(如果支持的话--没有检查)。 - John Millikin
6个回答

6
您可以简单地执行以下操作。
s = s.replace('\r\n', '\n')

您想要的是将所有CRNL的出现替换为NL。


还需要添加 .rstrip("\r\n") 以去除末尾的CRLF。 - Superdooperhero

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

2
如果它们在字符串的末尾,我建议使用以下方法:
buffer = "<text from your subprocess here>\r\n"
no_cr = buffer.rstrip("\r\n")

您还可以使用没有参数的 rstrip(),这将同时移除空格。

1

replace('\r\n','\n') 应该可以使用,但有时候却不起作用。多么奇怪。相反,您可以使用以下内容:

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

0

实际上,你可以简单地按照以下步骤进行:

s = s.strip()

这将删除任何多余的空格,包括回车和换行符,以及字符串前后的空格。

s = s.rstrip()

执行相同的操作,但仅截取字符串的尾部。

也就是说:

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

s现在包含“现在是所有善良的时候…”

s = s.rstrip()

s现在包含'现在是所有善良的时候...'

更多信息请参见http://docs.python.org/library/stdtypes.html


0

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


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