我有一个很大的函数,它会导入一些行,并且大多数值行都是整数,因此我可以轻松地进行如下划分:
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
答案 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(',',''))