这基本上是我想做的:
unicode_string = "366d"
unicode_string_with_u = u"u%s" % (unicode_string)
它给出了:
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: truncated uXXXX escape
我有一个迭代,可以生成类似上面unicode_string = "366d"
的字符串,并希望将每个四位数字更改为看起来像u"u366d"
的东西,以便它打印我想要的 unicode 字符:㙭
.作为迭代的结果,它会给我一个看起来像㞘䗳駯獦蕄倢
的字符串 ------ 那么我如何处理核心python和python导入模块的这个问题呢?
不要将四位数十六进制值插入 Unicode 字符串 (u
(,而是将其插入字节字符串 (b
(,然后使用内置的unicode_escape
文本编码解码整个内容:
>>> unicode_string = "366d"
>>> u"u%s" % (unicode_string)
File "<stdin>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: truncated uXXXX escape
>>> b"u%s" % (unicode_string)
'\u366d'
>>> (b"u%s" % (unicode_string)).decode("unicode_escape")
u'u366d'
>>> print(_)
㙭
看起来内部有什么东西试图使用unicode_decode
解析代码中的字符串文字。也就是说,它实际上是在尝试解析字符u%s
,这不是一个有效的 Unicode 转义序列。