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

新手上路,请多包涵

假设 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 许可协议

阅读 576
2 个回答

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

使用 str.splitlines() 将文档拆分为 没有换行符 的行;如果你想,你可以重新加入它:

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

但现在 doc_rejoined 将所有行一起运行而没有定界符。

原文由 Martijn Pieters 发布,翻译遵循 CC BY-SA 3.0 许可协议

因为您将整个文档读入一个字符串,如下所示:

 'a\nb\nc\nd\n'

当您在该字符串上执行 rstrip('\n') 时,只有最右边的 \n 将被删除,而其他所有的都保持不变,因此该字符串看起来像:

 'a\nb\nc\nd'

解决方案是将文件拆分成行,然后右删除每一行。或者只是将所有换行符替换为空: s.replace('\n', '') ,这给你 'abcd'

原文由 Viktor Kerkez 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题