我有一个形式的字符串:
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编码文件.
在Python 3中,假设我有
>>> thai_string = '???'
Run Code Online (Sandbox Code Playgroud)
使用encode给出
>>> thai_string.encode('utf-8')
b'\xe0\xb8\xaa\xe0\xb8\xb5'
Run Code Online (Sandbox Code Playgroud)
我的问题:如何使用而不是使用encode()返回bytes序列?我怎么能回到Python 3 类型呢?\u\xdecodestr
我尝试使用ascii内置,这给了
>>> ascii(thai_string)
"'\\u0e2a\\u0e35'"
Run Code Online (Sandbox Code Playgroud)
但这似乎不太正确,因为我无法解码它以获得thai_string.
Python文档告诉我
\xhh转义字符与十六进制值hh,而\uxxxx 使用16位十六进制值转义字符 xxxx文档说\u只用在字符串文字中,但我不确定这意味着什么.这是否暗示我的问题有一个有缺陷的前提?