从整数中删除“

时间:2018-08-07 14:54:38

标签: python

我有一个很大的函数,它会导入一些行,并且大多数值行都是整数,因此我可以轻松地进行如下划分:

price_unit_calc = float(inv_row[7]) / float(inv_row[6])

但是我得到一个错误:

ValueError: invalid literal for float(): 1,000.000

这是因为inv_row[7]有时是“ 1,000.000”而不是1.000.00

问题是,如果这些“”连续出现,该如何删除呢?

更新: 如果可以的话

 price_unit_calc = float(inv_row[7].replace(',','.')) / float(inv_row[6].replace(',','.'))

我仍然可以

File "/home//workspace/odoo-9.0/addons/config/wizard/import_wizard.py", line 39, in do_import
    price_unit_calc = float(inv_row[7].replace(',','.')) / float(inv_row[6].replace(',','.'))
ValueError: invalid literal for float(): 1.000.000

UPDATE2:

price_unit_calc = float(inv_row[7].replace(',','')) / float(inv_row[6].replace(',',''))

和错误

File "/home/antonp/workspace/odoo-9.0/openerp/osv/fields.py", line 362, in _symbol_set_float
    result = __builtin__.float(x or 0.0)
ValueError: invalid literal for float(): 1,000.000

2 个答案:

答案 0 :(得分:2)

正如我在评论部分中所述,$group是问题所在。因此,您需要将其删除,因为它仅与格式相关(它不会更改实际值)

,

此外,如果您的inv_row[7].replace(",", "") 是仅包含诸如inv_row之类的浮点值的列表,那么您应该做的是遍历该列表并应用上述逻辑,而不是在代码中的任何地方找到它可能会导致错误,

1,000.000

现在,对于您尝试过的事情,

for index,item in enumerate(inv_row):
     inv_row[index] = item.replace(",", "")

这将导致在字符串表示形式中添加多个 inv_row[7].replace(",", ".") ,这也会导致错误。

答案 1 :(得分:2)

您必须通过用空字符串替换逗号来删除数字中的逗号:

price_unit_calc = float(inv_row[7].replace(',','')) / float(inv_row[6].replace(',',''))