假设doc.txt
包含
a
b
c
d
我的代码是
f = open('doc.txt')
doc = f.read()
doc = doc.rstrip('\n')
print doc
为什么我会得到相同的值?
答案 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'的每个实例替换为''。这将删除输入文本中的所有新行字符。