如何在 python 3.6 中列出阿姆哈拉语(Unicode)代码点

问题描述 投票:0回答:3

我想要一个包含 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']

如何列出字符?

python utf-8
3个回答
2
投票

要打印从 U-1200 到 U-1399 的字符,我将使用带有

for
控制变量的
int
循环。使用
chr()
将数字转换为字符非常简单。

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

chr(0x1200) == '\u1200'

同样适用于 0x1201、0x1202、...0x1399。

请注意,我们使用

.isprintable()
来过滤掉代码中一些无用的条目。

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

for x in range(0x1200, 0x139A):
    if chr(x).isprintable():
        print(hex(x), chr(x))

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


0
投票

一个老问题,但我会添加一个替代答案以供将来参考。

OP 希望使用 Unicode 范围 U+1200 到 U+1399 打印阿姆哈拉语字母,并且提供的答案基于 Unicode 范围 U+1200..U+1399 的解决方案。此范围包括两个 Unicode 块,其中包括标点符号、数字、未分配的代码点以及阿姆哈拉语中未使用的字母。基本上提供的解决方案包括很多阿姆哈拉语音节字符。

公共区域设置数据存储库包含有关各种区域设置的字符使用信息(示例数据)。这包括主要范例,即该语言/区域设置所需的字母。辅助范例,可用于外来词或外来词的附加字母。和索引范例。该数据可通过 icu4cPyICU 访问:

import icu
# Create a LocaleData object for the Amharic Locale
# Use a locale label (string) rather than a Locale object.
ld = icu.LocaleData('am')
# Generate a Unicode Set containing the main (standard) exemplars.
exemplars = ld.getExemplarSet(icu.ULocaleDataExemplarSetType.ES_STANDARD)
# Typecast the UnicodeSet object to a list
exemplars_list = list(exemplars)
# Print list
print(*exemplars_list, sep=" ")

或将它们全部串在一起:

exemplars_list = list(icu.LocaleData('am').getExemplarSet(icu.ULocaleDataExemplarSetType.ES_STANDARD))

-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
该字符串,您将看到正确的字符。

\U
\u
转义(以及其他转义)的完整详细信息记录在字符串和字节文字中(确保切换到您实际使用的Python版本,因为细节可能不同,尤其是2.x 和 3.x 之间),但通常您不需要了解比上面解释的更多的信息。

© www.soinside.com 2019 - 2024. All rights reserved.