2016-10-26 8 views
5

与えられたロケールに応じてPython文字列モジュールからアルファベットを取得しようとしています(発音記号はéèêà...です)。ここでは、最小限の例です:PythonドキュメントでPython string.lettersにロケールの発音区別符号が含まれていません

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 

string.letters is locale dependentが、それは私のために動作しないようだと言われています。

私が間違ってやっていることは、言語依存のアルファベットを得る正しい方法ですか?

編集:設定したロケールprint locale.getlocale()を確認したところ、正しく変更されました。

+0

多分それは 'UTF-8'だけ' cp125x'とでは動作しません - http://stackoverflow.com/questions/9907191/setting-localeを参照してください-and-string-module-in-python – furas

+0

おそらく、あなたのロケールが更新されないため、 'setlocale'の後に' locale.getlocale(locale.LC_ALL) 'をチェックしている可能性があります –

+0

' .UTF-8'パーツを残すと、より多くの文字、しかし私はどのエンコーディングを見つけることができません... –

答えて

3

python 3. 5では、ロケールを 'fr_FR'( 'fr_FR.ISO8859-1'に、 'fr_FR.UTF-8'ではなく)に設定すると動作します(python 3.xではstring.lettersはありません) )。

>>> 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は "N" とあります。しかし、エンコーディングの表現は本当に壊れています。

私は非常にこれを読んでお勧めします:https://pythonhosted.org/kitchen/unicode-frustrations.html

関連する問題