Python:读取文件:防止转义特殊字符

Python:读取文件:防止转义特殊字符,python,special-characters,Python,Special Characters,我正在读取一个包含以下内容的文件: 这是第一行\n这是第二行\n\n另一行 我正在尝试读取此文件并保持特殊字符的原样 with open(r'test.txt') as f: c = f.read() 但是打印c总是显示: 这是第一行\\n这是第二行\\n\\n另一行 我尝试过在r'text.txt'中不加前缀r,但它没有改变任何东西 是否可以防止转义特殊字符\n 当然,我可以做一个str.replace('\\n','\n'),但我只是想知道我们是否可以不做这个额外的步骤。我看到两种

我正在读取一个包含以下内容的文件:
这是第一行\n这是第二行\n\n另一行

我正在尝试读取此文件并保持特殊字符的原样

with open(r'test.txt') as f:
    c = f.read()
但是打印
c
总是显示:

这是第一行\\n这是第二行\\n\\n另一行

我尝试过在
r'text.txt'
中不加前缀
r
,但它没有改变任何东西

是否可以防止转义特殊字符
\n

当然,我可以做一个str.replace('\\n','\n'),但我只是想知道我们是否可以不做这个额外的步骤。

我看到两种情况:

  • 您正在使用Python2以文本模式在windows上阅读它。Windows正在使用
    \r\n
    ,因此文本模式下的Python 2需要
    \r\n
    。您应该通过添加
    U
    open('file.txt','rU')
    来启用通用换行模式。您也可以使用
    io.open
    而不是
    open
    。我没有Python 2,所以我没有尝试过它

  • 实际上,文件中有两个字符
    \
    n
    ,而不是换行符,在这种情况下,一切都按预期进行


  • 您的文件是按字面意思包含“\n”还是包含换行符?你真的在打印吗?打印不应转义与repr相反的字符。
    c=f.readlines()
    以保持文件的结构?不清楚您要问什么。在界面上将其打印为输出不会显示在屏幕上<代码>打印c。如果您试图将其视为原始输入,那么它无论如何都会弹出。你能做的最好的办法就是
    import-re;re.sub('\s+','',c)
    \\n\n
    在您发布的输出中,奇怪的是第一个反斜杠被转义,第二个没有。总之,我刚刚在Windows中的python控制台中测试了您的示例(使用ANSI test.txt,不带任何换行符或回车符)和
    print c
    没有转义任何字符。
    'text.txt'
    r'text.txt'
    是完全相同的字符串-“r”前缀只影响字符串中转义字符的解释,此处没有转义字符。无论如何,它几乎不会影响您以后读取的文件数据的内容。