如何可变地打印Unicode字符串?

时间:2015-10-17 16:51:40

标签: python unicode

我对Python比较陌生,我现在正在尝试制作一个基本转换器(这样可以在基数10中输入一个数字,并以十六进制或二进制形式接收该数字的输出等)。为了增加我的程序的清晰度,我一直在尝试使用unicode数据,特别是u+208u+209中的字符来打印下标数字,以便用户知道打印时数字的基数

到目前为止,我的代码是:

import unicodedata

cNum = int(input("Please enter your number: "))

oBase = int(input("Please enter the base you are converting from. "))

nBase = int(input("Please enter the base are you converting to. "))

baseSub = "u'" + "\\u" + str(2080 + nBase) + "'"

baseSub.decode('utf-8')

print(subBase)

subBase是我试图转换为unicode的字符串,允许打印新基数的下标数字(这样如果我在十进制中输入2,则输出可以打印为1,下标为2 )。我一直在做的只是编写一堆IF语句来检查nBase是1,2,3等等。但它非常笨拙。通常,要打印每个下标,print语句将是(u'\u208x')(x是您要打印的任何下标形式0-9)。上面的代码是我尝试创建一个unicode字符串,即(u'\u208x'),其中x是nBase。如果没有解码功能,将subBase指定为“u”+“\ u”... ...会打印一个u'\u208x'的文字字符串。否则会出现subBase没有属性“decode”的错误。如果有办法,如何在不使用大量IF语句的情况下,从unicode中可靠地打印下标数字?

1 个答案:

答案 0 :(得分:0)

这可以将任何数字转换为其下标代码点:

number = 1234567890
print(''.join(chr(0x2080+int(c)) for c in str(number)))

输出:

₁₂₃₄₅₆₇₈₉₀

请注意,输出编码和字体需要支持字符。

chr将数字转换为其Unicode等效值,U+2080是十六进制的Unicode代码点,因此您需要0x2080而不是2080