这是打印unicode的正常方法。
AC_CHECK_LIB
输出下标字符
print('\u2080')
字符串格式提供了一些素材
₀
输出
for i in range(3):
print('u208{}'.format(i))
我正在尝试通过在这些字符前面加上'\'来生成unicode。
我想我快到了。
u2080
u2081
u2082
输出
print('\\'+'u2080')
下一步,如何输出下标₀?
答案 0 :(得分:2)
您可以使用ord
将Unicode字符转换为整数,应用转换(根据您的操作,按位运算符可能会很方便),然后使用chr
转换回Unicode字符:
>>> print(list(chr(ord('\u2080') | i) for i in range(10)))
['₀', '₁', '₂', '₃', '₄', '₅', '₆', '₇', '₈', '₉']
您还可以跳过ord
并将海峡从int转换为character:
>>> print(list(chr(0x2080 + i) for i in range(10)))
['₀', '₁', '₂', '₃', '₄', '₅', '₆', '₇', '₈', '₉']
答案 1 :(得分:0)
实际上,仅使用字符串,而无需提取代码点的编号并使用chr
函数,可以创建相应的unicode字符:
stdlib中的模块codecs
具有注册和获取文本编解码器的功能:从文本到字节到字节的映射,以及其他一些文本或字节转换。
在这些转换中,有unicode_escape
字符。使用bytes.decode
方法将字节对象转换为文本时,可以直接使用它,但是也可以使用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”语法取代了.format
方法,在Python 3.6中几乎用于所有用途)
通常,人们会更喜欢使用内置的chr
,因为它可以避免使用字符串格式,并且可以直接处理数字。 (例如,如果我们希望从某个代码点开始超过16个字符,则上述方法将无法按原样工作。)
print(" ".join(chr(0x2080 + i) for i in range(29)))
将打印:
₂₂p p p p p