假设doc.txt
包含
a
b
c
d
我的代码是
f = open('doc.txt')
doc = f.read()
doc = doc.rstrip('\n')
print doc
为什么我得到相同的值?
str.rstrip()
删除尾随换行符,而不是中间的所有换行符。毕竟,你有一根很长的绳子。
用于str.splitlines()
将文档拆分为不带换行符的行;如果您愿意,您可以重新加入它:
doclines = doc.splitlines()
doc_rejoined = ''.join(doclines)
但现在doc_rejoined
将所有行一起运行而没有分隔符。
因为您将整个文档读入一个字符串,如下所示:
'a\nb\nc\nd\n'
当您rstrip('\n')
对该字符串执行 a 时,只会\n
删除最右边的,而其他所有的都保持不变,因此字符串看起来像:
'a\nb\nc\nd'
解决方案是将文件分成几行,然后右剥离每一行。或者只是用任何内容替换所有换行符:s.replace('\n', '')
,这会给你'abcd'
.
rstrip
从整个字符串中去除尾随空格。如果您希望它在单独的行上工作,您需要先使用类似doc.split('\n')
.
试试这个:
with open('doc.txt') as f:
for line in f:
print line,
解释:
with
,它负责在最后关闭文件for line in f
rstrip()
,因为我们一次读取和打印一行考虑使用替换并用 '' 替换 '\n' 的每个实例。这将消除输入文本中的所有换行符。