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