Python atof与本地输入

时间:2016-02-19 23:26:16

标签: python number-formatting

说,我有一个(德语)表达式,其中显示10.401,40 (in Mio EUR),我希望将其转换为Python中的实数浮点数(在这种情况下约为10亿)。 这就是我到目前为止所做的:

import re, locale
from locale import *
locale.setlocale(locale.LC_ALL, 'de_DE') 

string = "10.401,40 (in Mio EUR)"
m = re.search(r'([\d.,]+)', string)
if m is not None:
    number = atof(m.group(1)) * 10**6

但是,它会引发ValueErrorValueError: invalid literal for float(): 10.401.40) 为什么?是不是.setlocale()指令应该正好处理这个?是否有一种pythonic方式(但是!)没有意识到?

1 个答案:

答案 0 :(得分:3)

我得到了相同的ValueError。正如this similar question所解释的那样,您需要在系统中安装德语语言环境。按照上述步骤,我输入了sudo dpkg-reconfigure locales并选择了de-DE.UTF-8。我必须修改区域设置行以匹配locale.setlocale(locale.LC_ALL, 'de_DE.utf8')并让您的代码段运行。祝你好运!