【问题标题】:Python atof with local input带有本地输入的 Python atof
【发布时间】:2016-06-01 17:07:18
【问题描述】:

假设,我有一个(德语)表达式,其内容为 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方式?

【问题讨论】:

  • 您的代码在 Python 2 和 Python 3 中都适用于我。
  • 您的 sn-p 和回溯不匹配
  • @PadraicCunningham 为什么不呢?我从控制台复制了它。
  • 10.401,40如何变成10.401.40
  • 您的示例在我的机器上运行良好...您确定安装了 de_DE 语言环境吗?

标签: python number-formatting


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多