在Windows上正确设置Python的区域设置的方法是什么?
我正在尝试以符合地区习惯的方式对一串字符串进行排序。我之前用过Babel库来处理其他国际化相关的任务,但它不支持排序。Python的locale
模块提供了一个strcoll
函数,但需要将进程的地区设置为我想要使用的那种。这有点麻烦,不过我可以接受。
问题是我似乎无法真正设置地区。locale模块的文档中给出了一个示例:
import locale
locale.setlocale(locale.LC_ALL, 'de_DE')
当我运行这个时,我得到了这个结果:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python26\Lib\locale.py", line 494, in setlocale
locale.Error: unsupported locale setting
我哪里做错了?
6 个回答
22
这是设置德语地区的唯一正确方法,正如提问者所询问的:
import locale
locale.setlocale(
category=locale.LC_ALL,
locale="German" # Note: do not use "de_DE" as it doesn't work
)
不过请注意,最好这样设置:
import locale
locale.setlocale(
category=locale.LC_ALL,
locale=""
)
我们应该给locale
这个参数传一个空字符串,也就是locale=""
,这样系统会自动选择用户操作系统上设置的默认地区。
我强烈建议你总是使用locale=""
,因为这是唯一不依赖于地区的方式,可以提供绝对的灵活性。
26
你不应该给setlocale函数传递一个明确的地区设置,这样做是不对的。让它自己从环境中去判断。你只需要给它传递一个空字符串就可以了。
import locale
locale.setlocale(locale.LC_ALL, '')