实际上,只处理字符串,而不需要提取代码点的数量和使用chr函数,就可以创建相应的unicode字符:
stdlib中的模块codecs具有注册和获取文本编解码器的功能:从文本到字节的映射,以及其他一些文本或字节转换。在
在这些变换中有unicode_escape字符。它可以在使用bytes.decode方法将bytes对象转换为文本时直接使用,但也可以使用codecs.getdecoder("unicode_escape")检索并将文本转换为文本。在
因此,可以:In [139]: import codecs
In [140]: esc = codecs.getdecoder("unicode_escape")
In [141]: for i in range(10):
...: print(esc(f"\\u208{i}")[0], end=" ")
...:
...:
...:
₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉
对解码器的调用返回一个元组,其中包含结果和所消耗的输入字符数。调用后的[0]只检索转换后的结果。在
(上面我使用了“f-string”语法,在python3.6中几乎所有的用法都使用了取代.format方法的“f-string”语法)
通常情况下,人们更喜欢使用内置的chr,因为它避免了处理字符串格式的麻烦,并且可以直接处理数字。(例如,如果我们希望从某个代码点开始的字符超过16个,那么上面的方法就不能正常工作了)。在
^{pr2}$
将打印:
₀₁₃₄₆₇₈₉₊₋₍₎ₐₑₓₔₕₖ𔗪ₙₚₛₜ