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

时间:2013-08-16 20:46:17

标签: python line

假设doc.txt包含

a
b
c
d

我的代码是

f = open('doc.txt')
doc = f.read()
doc = doc.rstrip('\n')
print doc

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

5 个答案:

答案 0 :(得分:15)

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

使用str.splitlines()将文档拆分为行而不添加换行符;如果您愿意,可以重新加入:

doclines = doc.splitlines()
doc_rejoined = ''.join(doclines)

但现在doc_rejoined将使所有行在没有分隔符的情况下一起运行。

答案 1 :(得分:4)

因为您将整个文档读入一个看起来像的字符串:

'a\nb\nc\nd\n'

当你对该字符串执行rstrip('\n')时,只会移除最右边的\n,而不会触及所有其他字符串,因此字符串将如下所示:

'a\nb\nc\nd'

解决方案是将文件拆分为行,然后右键剥离每一行。或者只更换所有换行符:s.replace('\n', ''),它会为您提供'abcd'

答案 2 :(得分:2)

rstrip从整个字符串中删除尾随空格。如果您希望它能够在单独的行上工作,则需要先使用doc.split('\n')等字符串将字符串拆分为行。

答案 3 :(得分:1)

请改为尝试:

with open('doc.txt') as f:
    for line in f:
        print line,

说明:

  • 打开文件的推荐方法是使用with,它负责在最后关闭文件
  • 您可以使用for line in f
  • 迭代文件中的每一行
  • 现在无需拨打rstrip(),因为我们一次只能阅读和打印一行

答案 4 :(得分:0)

考虑使用replace并将'\ n'的每个实例替换为''。这将删除输入文本中的所有新行字符。