说,我有一个(German)表达式,它读取10.401,40 (in Mio EUR),我想将其转换为Python中的实际浮点数(在这种情况下约为100亿)。
到目前为止,这是我所拥有的:

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方式吗?

最佳答案

我有相同的ValueError。如this similar question所述,您需要在系统中安装德语语言环境。按照上面的内容,我输入sudo dpkg-reconfigure locales并选择de-DE.UTF-8。我必须修改语言环境设置行以与locale.setlocale(locale.LC_ALL, 'de_DE.utf8')匹配,然后运行您的代码段。祝好运!

关于python - 具有本地输入的Python atof,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35516947/

10-16 03:16