如何将字符串添加到 unicode 而不会被 unicode 转义弹出错误?



这基本上是我想做的:

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 转义序列。

最新更新