2013-04-24 14 views
6

今日私は奇妙な問題に遭遇しました。私はPython標準ライブラリのstringモジュールのletters変数を使用していて、bpythonの結果がvanilla pythonの結果と同じではないことに気付きました。pythonとbpythonのstring.lettersが異なるのはなぜですか?

私はPython 2.7.3とbpython 0.10.1とvirtualenv 1.8.4を使用しています。ここに私が見ているものがあります。

$ bpython 
>>> import string 
>>> string.letters 
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' 


$ python 
>>> import string 
>>> string.letters 
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' 

私はxubuntu 12.10で問題なく動作しているとは確信していません。

誰かがここで何が起こっているのか説明できますか? docsから

+0

私は、 'string.letters = string.ascii_upper + string.ascii_lower'と' string.letters = string.ascii_lower + string.ascii_upper'とは異なる実装であると私は思っていません(あなたが 'string.letters [:26]'や何かをやろうとしない限り)あなたのプログラムに何らかの影響を与えます。 –

+0

それは奇妙です: 'string.letters'を使うと、あなたと同じ結果が得られます。 ascii_letters'私はPythonとbpythonの両方で '' abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ''を取得します。 – dusan

答えて

4

は、string.lettersは、文字列の連結は、以下 を説明小文字と大文字

として定義されます。特定の値はロケールに依存し、locale.setlocale()が呼び出されると に更新されます。

あなたのロケールが異なる可能性があります。

+4

'bpython'は'( 'en_US'、 'UTF-8')の 'ロケール'を表示し、 'python'は'(None、None) ''ロケール 'を表示します –

+0

ロケールはそれに影響を与えていないようです。 '' '(' en_US '、' UTF-8 ') 'に' 'python''のロケールを変更し、' 'string.letters''は同じものでした。 –

関連する問題