说,我有一个(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
但是,它会引发一个
ValueError
(ValueError: 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/