如何在Python中连接和输出unicode文本变量

时间:2015-06-25 08:25:40

标签: python unicode

我的标题术语可能不正确,可能是我无法从网站上找到这个简单内容的原因。

我有一个字符串变量列表。我如何实际连接它们并在Python中输出一个真正的unicode语句?

base = ['280', '281', '282', '283']
end = ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f']
unicodes = [u''.join(['\u', j, i]) for j in base for i in end]

for u in unicodes:
    print u

我只会获得像'\ u280F'这样的字符串而不是真正的字符。但如果我这样做:

print u'\u280F'

显示正确的符号,即:⠏

我确信有一种更优雅的方式可以获得从u2800到u283F的一系列符号......

2 个答案:

答案 0 :(得分:5)

将字符串转换为整数(使用intbase 16),使用unichrchr如果您正在使用Python 3.x)将数字转换为unicode对象。

>>> int('280' + 'F', 16)  # => 0x280F, 16: hexadecimal
10255
>>> unichr(int('280' + 'F', 16))  # to unicode object
u'\u280f'
>>> print unichr(int('280' + 'F', 16))
⠏
base = ['280', '281', '282', '283']
end = ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f']
unicodes = [unichr(int(j + i, 16)) for j in base for i in end]

for u in unicodes:
    print u

答案 1 :(得分:0)

如果您遇到unicodes输入;您可以使用unicode-escape编解码器来获取Unicode(b'\\u2800'.decode('unicode-escape') == u'\u2800'):

>>> for escaped in unicodes: print escaped.decode('unicode-escape')
...
⠽
⠾
⠿

否则,直接生成整数范围:

for ordinal in range(0x2800, 0x283f + 1):
    print unichr(ordinal)

在这种情况下它产生相同的输出。