说,我有一个(德语)表达式,其中显示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
但是,它会引发ValueError
(ValueError: invalid literal for float(): 10.401.40
)
为什么?是不是.setlocale()
指令应该正好处理这个?是否有一种pythonic方式(但是!)没有意识到?
答案 0 :(得分:3)
我得到了相同的ValueError
。正如this similar question所解释的那样,您需要在系统中安装德语语言环境。按照上述步骤,我输入了sudo dpkg-reconfigure locales
并选择了de-DE.UTF-8
。我必须修改区域设置行以匹配locale.setlocale(locale.LC_ALL, 'de_DE.utf8')
并让您的代码段运行。祝你好运!