【问题标题】:Python changes \n to \\n when reading a text file [closed]Python 在读取文本文件时将 \n 更改为 \\n [关闭]
【发布时间】:2020-08-30 09:01:18
【问题描述】:

我有一个文本文件,其中包含 \n 作为换行符。

在 Python 3.6 中,当我使用以下代码加载它时:

file = open(file_name, 'r')
contents = file.read()

它将所有\n 更改为\\n。例如:

txt文件中的原文:

This is a test \n plus senond \n test.

用 Python 阅读后:

"This is a test \\n plus senond \\n test."

我需要保留所有的 \n 作为新行并对其进行更多分析(使用 reg ex)。

读取文件并解决此问题的正确方法是什么?

【问题讨论】:

  • 因为如果你可以在文本文件中看到\n,那就是\ n,而不是换行符\n 字符。如果你也想让它们换行,请执行replace("\\n", "\n")
  • 您可能还会看到输入字符串的 repr 表示形式 - 如果您要将其写出来或 print(contents) 它应该呈现新行。
  • "\n" 是一个转义字符,由于你的文件中有字符串"\n",它会被转义到"\\n"

标签: python file text newline strip


【解决方案1】:

在 Python 中读取文件时,默认情况下会保留所有实际的换行符(换行符 / LF,十六进制值 0x0A)。 但是您的文件似乎包含转义序列,您希望将其转换为实际的单个换行符。

在这种情况下,只需使用:print(contents.replace("\\n", "\n"))

【讨论】:

  • 我应用了这个修改,它解决了我的问题:contents = file.read().replace("\\n", "\n")。谢谢
【解决方案2】:

你从哪里得到双反斜杠输出?我只是自己测试了这个,打印从文件中读取的内容,并将其写回另一个文件,似乎只保留了一组...

代码:

file = open("test.txt", 'r')
contents = file.read()
print(contents)
file.close()
file2 = open("test2.txt", "w")
file2.write(contents)
file2.close()

两个输入文件的编码都包含

This is a test \n plus senond \n test.

在我的情况下,输出文件(结果完全相同)是 UTF-8。也许这与此有关?只是猜测

我无法复制您的问题,但正如 shredEngineer 所说,您可以通过简单的替换手动修复它。知道为什么您的代码会添加第二个反斜杠会很有趣...

【讨论】:

    猜你喜欢
    • 2023-01-25
    • 2017-01-21
    • 2023-03-02
    • 2011-12-21
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多