假设 doc.txt
包含
a
b
c
d
我的代码是
f = open('doc.txt')
doc = f.read()
doc = doc.rstrip('\n')
print doc
为什么我得到相同的值?
原文由 Deneb 发布,翻译遵循 CC BY-SA 4.0 许可协议
假设 doc.txt
包含
a
b
c
d
我的代码是
f = open('doc.txt')
doc = f.read()
doc = doc.rstrip('\n')
print doc
为什么我得到相同的值?
原文由 Deneb 发布,翻译遵循 CC BY-SA 4.0 许可协议
因为您将整个文档读入一个字符串,如下所示:
'a\nb\nc\nd\n'
当您在该字符串上执行 rstrip('\n')
时,只有最右边的 \n
将被删除,而其他所有的都保持不变,因此该字符串看起来像:
'a\nb\nc\nd'
解决方案是将文件拆分成行,然后右删除每一行。或者只是将所有换行符替换为空: s.replace('\n', '')
,这给你 'abcd'
。
原文由 Viktor Kerkez 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答979 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
str.rstrip()
删除 尾随 的换行符,而不是中间的所有换行符。毕竟你有一根长绳子。使用
str.splitlines()
将文档拆分为 没有换行符 的行;如果你想,你可以重新加入它:但现在
doc_rejoined
将所有行一起运行而没有定界符。