在Python中设置语言环境和字符串模块

时间:2012-03-28 12:09:58

标签: python localization

这个简单的scrit:

from locale import LC_ALL, setlocale
print setlocale(LC_ALL,"")
from string import letters
print letters

给了我这个输出:

tr_TR.utf8
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

并且,在这里:http://docs.python.org/library/string.html?highlight=string#string.letters它表示它的值取决于语言环境,并在调用setlocale时更新。但是,我没有看到我的语言环境中的任何信件。有什么方法可以获得当前区域设置的字母列表吗?

1 个答案:

答案 0 :(得分:2)

我必须明确地将语言环境设置为土耳其语,因为这不是我的计算机上的默认设置,但它似乎或多或少有效:

> python
Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.

>>> from locale import LC_ALL, setlocale
>>> print setlocale(LC_ALL,"Turkish")
Turkish_Turkey.1254
>>> from string import letters
>>> print letters
abcdefghijklmnopqrstuvwxyzƒsoªµºßàáâaäåæçèéêëìíîïgñòóôoöoùúûüisÿ...
  ABCDEFGHIJKLMNOPQRSTUVWXYZSOYAAAAÄÅÆÇEÉEEIIIIGÑOOOOÖOUUUÜIS
>>>

输出基本上看起来是正确的(AFAIK),除了包含Q,W和X之外,其中Wikipedia article中的内容不属于土耳其语字母。

<强>更新

为了更好地复制您的环境,我首先使用了“区域和语言选项”控制面板,并将我的区域更改为“土耳其语”,这应该使其成为setlocale的默认值。事实上,它确实列出的字母看起来还不错 - 所以我无法重现你的问题。

这次的一个区别是,在运行python之前,我首先将控制台的代码页更改为Windows ANSI Turkish 1254,以便从字母表中正确显示字符。这使输出显示的最后两个字母正确显示,但它仍然包括Q,W和X字母,这些字母不是字母表的一部分(在我的选项中,它是错误的)。

C:\>chcp 1254
Active code page: 1254

C:\>python
Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from locale import LC_ALL, setlocale
>>> print setlocale(LC_ALL,"")
Turkish_Turkey.1254
>>> from string import letters
>>> print letters
abcdefghijklmnopqrstuvwxyzƒšœªµºßàáâãäåæçèéêëìíîïğñòóôõöøùúûüışÿ...
  ABCDEFGHIJKLMNOPQRSTUVWXYZŠŒŸÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖØÙÚÛÜİŞ
>>>