2015-03-30 100 views
0

我无法让setlocale工作。 hr_HR应该将逗号识别为小数点定界符,而不是。我错过了什么?我在Ubuntu 14.10上,python 2.7python setlocale不起作用

>>> import locale 
>>> float("3.2") 
3.2 
>>> float("3,2") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: invalid literal for float(): 3,2 
>>> locale.setlocale(locale.LC_NUMERIC, 'hr_HR.utf8') 
'hr_HR.utf8' 
>>> float("3.2") 
3.2 
>>> float("3,2") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: invalid literal for float(): 3,2 
>>> locale.setlocale(locale.LC_ALL, 'hr_HR.utf8') 
'hr_HR.utf8' 
>>> float("3.2") 
3.2 
>>> float("3,2") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: invalid literal for float(): 3,2 
>>> 

回答

2

你似乎想要locale.atof(string)功能。 从文档:

locale.atof(字符串)

字符串到浮点数,继LC_NUMERIC设置转换。

从文档看,它看起来不像setlocal改变内置函数的工作方式,但给出了一个不同的函数来做类似的事情。