在Python 3中如何将unicode代码点打印为u' \ U ...'

时间:2017-03-13 05:11:13

标签: python-3.x unicode utf-16

无论出于何种原因,我认为创建一个我感兴趣的表情符号表是很好的。第一列是代码点,第二列是表情符号,第三列是名称。这个网页的内容,但根据我的使用量身定制。

Full emoji data

假设我弄清楚如何迭代代码点(还有其他问题或我构建一个感兴趣的列表)然后我将循环遍历代码点,如

u_str = u'\U0001F001'
u_str = u'\U0001F002'

(当然以编程方式生成)

并打印(循环):

print(u'\U0001F001', u_str, ' ', unicodedata.name(u_str))
print(u'\U0001F002', u_str, ' ', unicodedata.name(u_str))

如果有能力使用unicodedata和某些属性,例如unicodedata.hex_representation,那么我只会使用它,但如果在unicodedata中有该属性,我就不会理解规范来查看它。

所以在寻找答案时我发现了这个问题:

how-does-one-print-a-unicode-character-code-in-python

我尝试:

>>> print(u_str.encode('raw_unicode_escape'))
b'\\U0001f600'

我正在寻找的是我所投入的内容:

u_str = u'\U0001F600'

这可能还是有其他方法来实现表格的构建?

2 个答案:

答案 0 :(得分:3)

这样的东西?

>>> for i in range(0x1f001,0x1f005):
>>>     print('U+{0:04X} \\U{0:08X} {1}'.format(i,chr(i)))
U+1F001 \U0001F001 
U+1F002 \U0001F002 
U+1F003 \U0001F003 
U+1F004 \U0001F004 

答案 1 :(得分:1)

  1. 原始表现形式永远消失了。案例和格式由Python本身指定。

  2. 您需要将字节解码回文本。试试ascii编解码器,因为所有raw_unicode_escape都会生成。