在 Python 3 如何将 unicode 代码点打印为 u'\U...'
In Python 3 how to print unicode codepoint as u'\U...'
出于某种原因,我认为创建一个 table 我感兴趣的表情符号会很好。第一列是代码点,第二列是表情符号,第三列是名称。与此网页类似的东西,但适合我的使用。
假设我弄清楚如何迭代代码点(还有其他问题或者我构建了一个感兴趣的列表)那么我将循环遍历代码点,例如
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'
这是否可能或是否有其他方法来实现 table 的构建?
原来的表现已经一去不复返了。大小写和格式由 Python 本身指定。
您需要将字节解码回文本。尝试 ascii
编解码器,因为这就是 raw_unicode_escape
将生成的所有内容。
使用 Python 3.6+:
>>> for i in range(0x1f001,0x1f005):
>>> print(f'U+{i:04X} \U{i:08X} {chr(i)}')
U+1F001 \U0001F001
U+1F002 \U0001F002
U+1F003 \U0001F003
U+1F004 \U0001F004
出于某种原因,我认为创建一个 table 我感兴趣的表情符号会很好。第一列是代码点,第二列是表情符号,第三列是名称。与此网页类似的东西,但适合我的使用。
假设我弄清楚如何迭代代码点(还有其他问题或者我构建了一个感兴趣的列表)那么我将循环遍历代码点,例如
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'
这是否可能或是否有其他方法来实现 table 的构建?
原来的表现已经一去不复返了。大小写和格式由 Python 本身指定。
您需要将字节解码回文本。尝试
ascii
编解码器,因为这就是raw_unicode_escape
将生成的所有内容。
使用 Python 3.6+:
>>> for i in range(0x1f001,0x1f005):
>>> print(f'U+{i:04X} \U{i:08X} {chr(i)}')
U+1F001 \U0001F001
U+1F002 \U0001F002
U+1F003 \U0001F003
U+1F004 \U0001F004