Python string.letters不包含语言环境变音符号

F. *_*din 5 python string locale diacritics alphabet

我试图从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
Run Code Online (Sandbox Code Playgroud)

在python文档中,据说string.letters依赖于语言环境,但似乎它对我不起作用.

我做错了什么,是获得依赖语言的字母表的正确方法吗?

编辑:我刚刚在设置print locale.getlocale()后检查了区域设置并且它已正确更改.

myd*_*mon 3

在 python 2.7 中(python 3.x 中没有 string.letters),如果将语言环境设置为 \'fr_FR\' (相当于 \'fr_FR.ISO8859-1\',而不是 \'fr_FR.UTF-8 \')。

\n\n
>>> import locale, string\n>>> locale.setlocale(locale.LC_ALL, \'es_ES\')\n\'es_ES\'\n>>> string.letters\n\'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\'\n>>> locale.setlocale(locale.LC_ALL, \'es_ES.UTF-8\')\n\'es_ES.UTF-8\'\n>>> string.letters\n\'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以 \\xaa 是字符“\xc2\xaa”,\\xab 是“\xc2\xab”,\\xd1 是“\xc3\x91”等等。但编码表示确实被破坏了。

\n\n

我强烈建议阅读此内容: https ://pythonhosted.org/kitchen/unicode-frustrations.html

\n