python 在 python 中读取包含 \x0a 的文件作为 \n 而不是 \\x0a
python Reading file containing \x0a as \n not as \\x0a in python
我有 xml 文件,其中包含十六进制字符 \x0a。我想将它们转换为适当的 unicode 字符,例如 python.
中的 \n
每当我尝试读取文件时,它都会转义反斜杠字符。
例如我的文件内容是
get EtqLt5fwmRBE\x0a
然后在读取文件后,字符串的表示形式是
get EtqLt5fwmRBE\x0a
但我想要的是将 \x0a
转换为 \n
文件中没有\x0a
。还有其他角色。例如,文件中的行 repr()
之一是
\x7c12\x7c5\x7c\x0a
以上的预期输出是
|12|5|
您可以 运行 您的文本通过 string_escape
(仅 Python 2,生成字节串)或 unicode_escape
(Python 2 和 3,产生一个 unicode 字符串) codecs.
如何应用这些取决于您的 Python 版本(2 或 3)以及输入是否为字节字符串(str
in Python 2,bytes
在 Python 3) 或 Unicode 字符串 (unicode
在 Python 2, str
在 Python 3).
Python 2,如果你有字节串或 unicode字符串,只需调用decode()
:
fixed = yourstring.decode('unicode_escape')
在Python3中,如果有字节就用bytestring.decode(...)
。如果你有 str
,首先编码为 Latin-1(因为 unicode_escape
将使用它来解码任何非 ASCII 代码点!):
fixed = yourstring.encode('latin1').decode('unicode_escape')
演示 Python 2:
>>> '\x7c12\x7c5\x7c\x0a'.decode('unicode_escape')
u'|12|5|\n'
>>> u'\x7c12\x7c5\x7c\x0a'.decode('unicode_escape')
u'|12|5|\n'
在Python 3:
>>> b'\x7c12\x7c5\x7c\x0a'.decode('unicode_escape')
'|12|5|\n'
>>> '\x7c12\x7c5\x7c\x0a'.encode('latin1').decode('unicode_escape')
'|12|5|\n'
我有 xml 文件,其中包含十六进制字符 \x0a。我想将它们转换为适当的 unicode 字符,例如 python.
中的 \n每当我尝试读取文件时,它都会转义反斜杠字符。
例如我的文件内容是
get EtqLt5fwmRBE\x0a
然后在读取文件后,字符串的表示形式是
get EtqLt5fwmRBE\x0a
但我想要的是将 \x0a
转换为 \n
文件中没有\x0a
。还有其他角色。例如,文件中的行 repr()
之一是
\x7c12\x7c5\x7c\x0a
以上的预期输出是
|12|5|
您可以 运行 您的文本通过 string_escape
(仅 Python 2,生成字节串)或 unicode_escape
(Python 2 和 3,产生一个 unicode 字符串) codecs.
如何应用这些取决于您的 Python 版本(2 或 3)以及输入是否为字节字符串(str
in Python 2,bytes
在 Python 3) 或 Unicode 字符串 (unicode
在 Python 2, str
在 Python 3).
Python 2,如果你有字节串或 unicode字符串,只需调用decode()
:
fixed = yourstring.decode('unicode_escape')
在Python3中,如果有字节就用bytestring.decode(...)
。如果你有 str
,首先编码为 Latin-1(因为 unicode_escape
将使用它来解码任何非 ASCII 代码点!):
fixed = yourstring.encode('latin1').decode('unicode_escape')
演示 Python 2:
>>> '\x7c12\x7c5\x7c\x0a'.decode('unicode_escape')
u'|12|5|\n'
>>> u'\x7c12\x7c5\x7c\x0a'.decode('unicode_escape')
u'|12|5|\n'
在Python 3:
>>> b'\x7c12\x7c5\x7c\x0a'.decode('unicode_escape')
'|12|5|\n'
>>> '\x7c12\x7c5\x7c\x0a'.encode('latin1').decode('unicode_escape')
'|12|5|\n'