我正在尝试从python字符串模块获取字母表,具体取决于给定的区域设置,但没有成功(即使用变音符号,即éèêà...用于法语)。这是一个最小的例子:
import locale, string
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
print string.letters
# shows ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
locale.setlocale(locale.LC_ALL, 'fr_FR.UTF-8')
print string.letters
# also shows ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
在python文档中,它被称为string.letters is locale dependent,但似乎它对我不起作用。
我做错了什么,是获得依赖语言的字母表的正确方法吗?
编辑:我刚刚在设置后检查了区域设置print locale.getlocale()
并且它已正确更改。
答案 0 :(得分:3)
在python 2.7中(python 3.x中没有string.letters)如果你将语言环境设置为'fr_FR'(相当于'fr_FR.ISO8859-1',而不是'fr_FR.UTF-8'),它就可以工作
>>> import locale, string
>>> locale.setlocale(locale.LC_ALL, 'es_ES')
'es_ES'
>>> string.letters
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\xaa\xb5\xba\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'
>>> locale.setlocale(locale.LC_ALL, 'es_ES.UTF-8')
'es_ES.UTF-8'
>>> string.letters
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
所以\ xaa是字符“ª”,\ xab“«”,\ xd1是“Ñ”等等。但编码表示确实被破坏了。
我强烈建议您阅读此内容:https://pythonhosted.org/kitchen/unicode-frustrations.html