在哪里/如何在 Python 中获取语言环境的字母表?

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

是否有 Python 库或在线资源可以用来以编程方式获取特定语言环境的字母表?

例如,对于“es_ES”语言环境,我想获得

'ABCDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyz'
或类似信息。

python unicode locale alphabetical
2个回答
0
投票

似乎这就是我正在寻找的:https://github.com/CrossWaterBridge/python-indexed-collation/,尽管我有兴趣知道Python是否有一个标准。


0
投票

这个问题实际上还没有答案,所以我想添加一个以供将来参考。

公共区域设置数据存储库 (CLDR) 包含 CLDR 中可用的大多数已定义区域设置的示例数据。示例数据包括主要/标准示例,即编写语言所需的所有字符。辅助范例是例如借词可能需要的附加字符。辅助字符不属于字母表,通常不使用。示例数据还包括索引字符和标点符号。可用的内容因区域设置而异,但至少主要/标准示例将可用。

ICU4C 通过 PyICU,通过

icu.LocaleData
类提供对此数据的访问。

import icu

# Create a LocaleData instance for the es_ES locale.
ld = icu.LocaleData("es_ES")
# Create a collator instance using an es_ES locale instance.
collator = icu.Collator.createInstance(icu.Locale('es_ES'))

# Create a Uuicode Set of standard (main) exemplar characters,
# including case mappings.
exemplars = ld.getExemplarSet(
    icu.USET_ADD_CASE_MAPPINGS,    
    icu.ULocaleDataExemplarSetType.ES_STANDARD)

# It is possible to use numeric values of the above 
#  * icu.USET_ADD_CASE_MAPPINGS = 4
#  * icu.ULocaleDataExemplarSetType.ES_STANDARD = 0
# exemplars = ld.getExemplarSet(4, 0)

# type cast to a list.
alphabet = list(exemplars)

# Sort list using Spanish collation.
alphabet.sort(key=collator.getSortKey)

print(alphabet)
# ['a', 'A', 'á', 'Á', 'b', 'B', 'c', 'C', 'd', 'D', 'e', 'E',
# 'é', 'É', 'f', 'F', 'g', 'G', 'h', 'H', 'i', 'I', 'í', 'Í',
# 'j', 'J', 'k', 'K', 'l', 'L', 'm', 'M', 'n', 'N', 'ñ', 'Ñ',
# 'o', 'O', 'ó', 'Ó', 'p', 'P', 'q', 'Q', 'r', 'R', 's', 'S',
# 't', 'T', 'u', 'U', 'ú', 'Ú', 'ü', 'Ü', 'v', 'V', 'w', 'W',
# 'x', 'X', 'y', 'Y', 'z', 'Z']

如果您所需的区域设置没有可用数据,则值得检查SLDR。这些文件是 XML 文件,需要解析所需的数据。

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