为什么不.rstrip('\n')工作?

Den*_*neb 11 python line

让我们说doc.txt包含

a
b
c
d
Run Code Online (Sandbox Code Playgroud)

我的代码是

f = open('doc.txt')
doc = f.read()
doc = doc.rstrip('\n')
print doc
Run Code Online (Sandbox Code Playgroud)

为什么我得到相同的价值?

Mar*_*ers 15

str.rstrip()删除尾随换行符,而不是中间的所有换行符.毕竟,你有一个长串.

使用str.splitlines()您的文件分割成线不带换行 ; 你可以重新加入它,如果你想:

doclines = doc.splitlines()
doc_rejoined = ''.join(doclines)
Run Code Online (Sandbox Code Playgroud)

但是现在doc_rejoined所有的线都会在没有分隔符的情况下一起运行.


Vik*_*kez 6

因为您将整个文档读入一个如下所示的字符串:

'a\nb\nc\nd\n'
Run Code Online (Sandbox Code Playgroud)

当你rstrip('\n')对该字符串执行 a时,只有最右边的\n会被删除,其他的都保持不变,所以字符串看起来像:

'a\nb\nc\nd'
Run Code Online (Sandbox Code Playgroud)

解决方案是将文件分成几行,然后右删除每一行。或者只是用空替换所有换行符:s.replace('\n', ''),这会给你'abcd'.