设置区域设置和字符串模块

2024-04-24 10:02:58 发布

您现在位置:Python中文网/ 问答频道 /正文

这张简单的纸条:

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

给我这个输出:

tr_TR.utf8
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

在这里:^{}它表示它的值依赖于语言环境,并在调用setlocale时更新。然而,我没有看到来自我所在地区的任何信件。有什么方法可以让我得到当前地区的字母列表吗


Tags: fromimportstringutf8alllocaletr地区
1条回答
网友
1楼 · 发布于 2024-04-24 10:02:58

我必须显式地将区域设置设置为Turkish,因为这不是我计算机上的默认设置,但它似乎或多或少起作用:

> 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之前,我首先将console的代码页更改为WindowsANSITurkish1254,以允许正确显示字母表中的字符。这使得输出的最后两个字母显示正确,但是它仍然包括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ŠŒŸÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖØÙÚÛÜİŞ
>>>

相关问题 更多 >