我正在尝试以区域设置感知的方式对字符串列表进行排序.我已经将Babel库用于其他与i18n相关的任务,但它不支持排序.Python的locale模块提供了一个strcoll函数,但需要将进程的语言环境设置为我想要使用的语言环境.有点痛,但我可以忍受它.
问题是我似乎无法实际设置区域设置.该文件的locale模块给出了这样的例子:
import locale
locale.setlocale(locale.LC_ALL, 'de_DE')
Run Code Online (Sandbox Code Playgroud)
当我运行时,我得到了这个:
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
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
1.000,1234我正在Windows操作系统下的Python中寻找德语数字格式(例如)的正确方法。
我尝试过locale.setlocale但没有成功。
相反,我编写了一个函数来提供所需的输出。
有没有更好的办法?
def ger_num(number, precision=3):
"""
returns german formatted number as string or an empty string
"""
if number is not None:
try:
my_number = "{:,f}".format(number)
except ValueError:
return ""
decimals, fraction = my_number.split(".")[0], my_number.split(".")[1]
decimals = decimals.replace(",", ".")
if precision:
return decimals + "," + fraction[:precision]
else:
return decimals
else:
return ""
Run Code Online (Sandbox Code Playgroud)