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'),但我只是想知道我们是否可以不做这个额外的步骤。我看到两种情况:
\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”前缀只影响字符串中转义字符的解释,此处没有转义字符。无论如何,它几乎不会影响您以后读取的文件数据的内容。