我有一个表格的字符串:
s = '\\xe2\\x99\\xac'
我想通过评估转义序列将其转换为字符♬。但是,我尝试的所有内容都会导致错误或打印出垃圾。如何强制Python将转义序列转换为文字unicode字符?
我在其他地方读到的内容表明以下代码行应该按照我的意愿行事,但它会导致UnicodeEncodeError。
print(bytes(s, 'utf-8').decode('unicode-escape'))
我也尝试了以下内容,结果相同:
import codecs
print(codecs.getdecoder('unicode_escape')(s)[0])
这两种方法都产生字符串'âx99',打印随后无法处理。
如果它产生任何差异,则从UTF-8编码文件中读取字符串,并在处理后最终输出到不同的UTF-8编码文件。
答案 0 :(得分:7)
...decode('unicode-escape')
会为您提供字符串'\xe2\x99\xac'
。
>>> s = '\\xe2\\x99\\xac'
>>> s.encode().decode('unicode-escape')
'â\x99¬'
>>> _ == '\xe2\x99\xac'
True
你需要解码它。但要解码它,首先使用latin1
(或iso-8859-1
)对其进行编码以保留字节。
>>> s = '\\xe2\\x99\\xac'
>>> s.encode().decode('unicode-escape').encode('latin1').decode('utf-8')
'♬'