如何在python 3.6中列出Amharic(Unicode)代码点

时间:2018-04-03 17:54:51

标签: python utf-8

我想要一个包含来自utf-8的阿姆哈拉字母的列表。字符范围从U + 1200到U + 1399。我正在使用Windows 8.我遇到了SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-5: truncated \UXXXXXXXX escape

我试过这个: [print(c) for c in u'U1399']

如何列出字符?

2 个答案:

答案 0 :(得分:1)

要将字符从U-1200打印到U-1399,我会使用带有await控制变量的for循环。使用int将数字转换为字符非常简单。

整数值0x1200(即十六进制的1200)可以转换为Unicode代码点U-1200,如下所示:chr()

类似于0x1201,0x1202,...... 0x1399。

请注意,我们使用chr(0x1200) == '\u1200'过滤掉一些无用条目的代码。

.isprintable()

print(' '.join(chr(x) for x in range(0x1200, 0x139A) if chr(x).isprintable()))

请注意,代码示例需要Python3。

答案 1 :(得分:-1)

您发布的代码根本不会产生任何错误:

>>> [print(c) for c in u'U1399']
U
1
3
9
9
[None, None, None, None, None]

它也没有任何非ASCII字符。

您可能想要使用Unicode反斜杠转义。你的问题可能更像是这样:

>>> u'\U1399'
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-5: truncated \UXXXXXXXX escape

原因是 - 正如错误消息所暗示的那样 - \U转义需要8个十六进制数字,并且您只提供了4个。所以:

>>> u'\U00001399'
'᎙'

但是有一个不同的转义,序列\u(注意小写u),它只占4位数:

>>> u'\u1399'
'᎙'

如果您正在使用Python 2.7,甚至可能在Windows上使用Python 3,那么您可能看不到那么好的输出,而是在其中使用反斜杠转义。但是如果你print那个字符串,你会看到正确的字符。

String and Bytes literals中记录了\U\u转义(以及其他转义)的完整详细信息(请务必切换到您实际使用的Python版本,因为细节可能不同,特别是在2.x和3.x之间),但通常你不需要知道比上面解释的更多。