python在{python

时间:2016-06-20 12:10:12

标签: python unicode python-unicode

我有xml文件,其中包含十六进制字符\ x0a。我想将它们转换为适当的unicode字符,如python中的\ n。

每当我尝试读取文件时,它都会转义反斜杠字符。

例如我的文件内容是

get EtqLt5fwmRBE\x0a

然后在读取文件后,字符串的表示出现

get EtqLt5fwmRBE\\x0a

但我想要的是将\x0a转换为\n

文件中没有\x0a。还有其他角色。例如,文件中repr()行之一是

\\x7c12\\x7c5\\x7c\\x0a

上面的预期输出是

|12|5|

1 个答案:

答案 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'