【发布时间】:2013-08-16 20:46:16
【问题描述】:
假设doc.txt 包含
a
b
c
d
我的代码是
f = open('doc.txt')
doc = f.read()
doc = doc.rstrip('\n')
print doc
为什么我得到相同的值?
【问题讨论】:
假设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') 时,只有最右边的\n 将被删除,而其他所有的都保持不变,因此字符串看起来像:
'a\nb\nc\nd'
解决方案是将文件分成几行,然后右剥离每一行。或者只是将所有换行符替换为空:s.replace('\n', ''),即为您提供'abcd'。
【讨论】:
rstrip 从整个字符串中去除尾随空格。如果您希望它在单独的行上工作,您需要先使用 doc.split('\n') 之类的东西将字符串分成几行。
【讨论】:
replace('\n', '')。除了行尾之外,行尾不会出现在任何地方。
试试这个:
with open('doc.txt') as f:
for line in f:
print line,
解释:
with,它负责在最后关闭文件for line in f 遍历文件中的每一行
rstrip(),因为我们一次读取和打印一行【讨论】:
考虑使用replace 并将“\n”的每个实例替换为“”。这将消除输入文本中的所有换行符。
【讨论】: