【问题标题】:How to get the current locale's alphabet in Python 3?如何在 Python 3 中获取当前语言环境的字母表?
【发布时间】:2019-02-02 08:47:49
【问题描述】:

在 Python 2 中,您可以执行以下操作来获取当前语言环境的字符集:

import string
print string.letters

但是,在 Python 3 中,字符串模块的依赖于语言环境的常量(例如 string.lettersstring.lowercasestring.uppercase 等)已被删除。


如何使用 Python 3 获取当前语言环境的字符集?

【问题讨论】:

  • 这个问题被建议重复:stackoverflow.com/questions/9561432/… 但是,顾名思义,ascii_letters 返回 ascii 字符 (a-Z),而不是当前定义的语言环境的字符
  • 为什么会被否决? +1
  • 我的猜测是该功能已被删除,因为它存在问题并且首先过于简化。您可能需要尝试不同的方法,例如查看 unicodedata.category
  • @wim 我认为标准库无法做到这一点。 unicodedata.category 没有提供详细的语言环境信息。 re\w 等进行了 locale-aware alpha 测试,但它仅适用于 8 位语言环境,并且“不鼓励使用此标志,因为语言环境机制非常不可靠”。
  • Unicode CLDR 为每个语言环境定义 exemplar characters,这似乎是您想要的。不幸的是,我目前找不到这些图表的来源文件。

标签: python python-3.x locale


【解决方案1】:

您可以使用pyicu 模块为每个语言环境获取exemplar characters

import locale
from icu import LocaleData

default, encoding = locale.getdefaultlocale()
languages = [default] + ['en_US', 'fr_FR', 'es_ES']

for language in languages:
    data = LocaleData(language)
    alphabet = data.getExemplarSet()
    print(language, alphabet)

输出

pt_BR [a-zà-ãçéêíò-õú]
en_US [a-z]
fr_FR [a-zàâæ-ëîïôùûüÿœ]
es_ES [a-záéíñóúü]

获取当前语言环境就足够了:

default, _ = locale.getdefaultlocale()
data = LocaleData(default)
alphabet = data.getExemplarSet()
print(default, alphabet)

【讨论】:

  • 这正是我要找的!谢谢!
猜你喜欢
  • 2020-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-11
  • 1970-01-01
  • 2014-10-25
  • 1970-01-01
相关资源
最近更新 更多