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