【问题标题】:Jython: parsing text to float containing commasJython:将文本解析为包含逗号的浮点数
【发布时间】:2009-04-30 16:29:49
【问题描述】:

如何将从工作表扫描的浮点数解析为包含逗号的文本?

txt = "1,903.44"
value = float(txt) # This fails due to ',' in string

更新:对不起,我不清楚。我使用的是 jython 2.5,它没有 locale 模块。

【问题讨论】:

    标签: floating-point jython string-parsing


    【解决方案1】:
    txt = "1,903.44"
    value = float(txt.replace(',', ''))
    

    如果您需要本地化,这不会真正起作用,但如果您知道逗号是分隔符,它就可以解决问题。

    【讨论】:

    • 这是最简单的,因为我没有 locale 模块。谢谢!
    【解决方案2】:

    locale.setlocale(locale.LC_ALL, '') 之后使用locale.atof()

    【讨论】:

    • +1 只是想补充一点,如果 OP 正在处理货币值,使用十进制包而不是浮点数可能更明智。 stackoverflow.com/questions/723356/…
    • 你说得对,这是为了解析发票以获取金额。
    • 您可以使用 locale.localeconv()['thousands_sep'] 来获取替换想法的区域设置安全版本的分隔符。显然,Jython 除外。
    【解决方案3】:

    你可以去掉逗号:

    txt = txt.replace(',', '')
    value = float(txt)
    

    【讨论】:

      【解决方案4】:

      我个人在处理货币值时会使用十进制包,以避免在使用浮点数时出现well-documented pitfalls

      from decimal import Decimal
      txt = txt.replace (',', '')
      value = Decimal(txt)
      

      正如其他海报所指出的,这仅在您的语言环境使用“,”作为千位分隔符时才有效,但应该让您朝着正确的方向前进。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-27
        • 2012-06-18
        • 2011-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-30
        相关资源
        最近更新 更多