【问题标题】:python locale - wrong decimal_point for german (de_DE) settingspython语言环境 - 德语(de_DE)设置的错误decimal_point
【发布时间】:2014-08-26 07:13:09
【问题描述】:

我在这个区域设置错误的小数分隔符。 短代码示例:

import locale
print locale.getdefaultlocale()[0]
print "decimal_point:", locale.localeconv()["decimal_point"]
print (float(1)/float(2))

结果是:

de_DE
decimal_point: .
0.5

(小数分隔符是点而不是逗号)。 Python 2.7

【问题讨论】:

    标签: python-2.7 locale decimal-point


    【解决方案1】:

    您需要致电locale.setlocale(locale.LC_ALL, '')。正如the docs 指出的那样:

    根据 POSIX,一个没有调用的程序 setlocale(LC_ALL, '') 使用可移植的'C' 语言环境运行。致电setlocale(LC_ALL, '') 让它使用 LANG 变量定义的默认语言环境。自从 我们不想干扰当前的语言环境设置,因此 以上述方式模拟行为。

    【讨论】:

    • Tnx 很多,但它只解决了一半的问题。 decimal_point 得到了逗号,但数字显示为 0.5(零点五)而不是 0,5(零逗号五)。
    • 是的,因为正如 PEP 331 所说,str() 是“不知道区域设置”的。要获得正确的数字格式,您必须使用locale 模块中的格式函数。
    • Tnx 再次,我不喜欢它,但看起来这是“pythonic”方式:-)
    猜你喜欢
    • 1970-01-01
    • 2013-01-10
    • 2013-07-20
    • 1970-01-01
    • 2020-04-05
    • 2019-08-27
    • 1970-01-01
    相关资源
    最近更新 更多