Python 什么';“1000”浮点数有什么问题吗?

Python 什么';“1000”浮点数有什么问题吗?,python,Python,我的蟒蛇生锈了。我有一个字符串的成本列表。我试图将它们转换为浮动,但当成本高于1000美元时,该值用逗号表示。float(“1000”)返回一个错误: Traceback (most recent call last): File "<pyshell#5>", line 1, in <module> decimal("1,000") TypeError: 'module' object is not callable 回溯(最近一次呼叫最后一次): 文件“”,第

我的蟒蛇生锈了。我有一个字符串的成本列表。我试图将它们转换为浮动,但当成本高于1000美元时,该值用逗号表示。float(“1000”)返回一个错误:

Traceback (most recent call last):
 File "<pyshell#5>", line 1, in <module>
   decimal("1,000")
TypeError: 'module' object is not callable
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
十进制(“1000”)
TypeError:“模块”对象不可调用

我知道这可能很简单,但你有解决办法吗?

十进制
不是
浮点
。十进制是一个模块。这就是你犯错误的原因

至于逗号,请先删除它们:

s = "1,000"
float(s.replace(",", "")) # = 1000.0

decimal
不是
float
。十进制是一个模块。这就是你犯错误的原因

至于逗号,请先删除它们:

s = "1,000"
float(s.replace(",", "")) # = 1000.0
在转换为float之前,使用re删除任何格式

>>> import re
>>> re.sub(",", "", "1000,00,00")
'10000000'
>>> 
在转换为float之前,使用re删除任何格式

>>> import re
>>> re.sub(",", "", "1000,00,00")
'10000000'
>>> 

引发的错误是因为您正在尝试如下方式调用模块:

>>> import decimal
>>> decimal("")
TypeError: 'module' object is not callable
你应该:

>>> import locale
>>> import decimal
>>> locale.setlocale(locale.LC_ALL, '')
>>> decimal.Decimal(locale.atoi("1,000"))
Decimal('1000')

因此,您可以这样做

引发的错误是因为您试图这样调用模块:

>>> import decimal
>>> decimal("")
TypeError: 'module' object is not callable
你应该:

>>> import locale
>>> import decimal
>>> locale.setlocale(locale.LC_ALL, '')
>>> decimal.Decimal(locale.atoi("1,000"))
Decimal('1000')

所以你可以这样做

在问题中,逗号被用作千位分隔符。你的结果不一样。@Muhammad Alkarouri:ohhh谢谢我没有很好地阅读这个问题:)在这个问题中,逗号被用作千位分隔符。你的结果不一样。@Muhammad Alkarouri:ohhh谢谢我没有很好地阅读这个问题:)
re
太过分了<代码>替换就足够了,如我的回答所示。
re
太过分了<代码>替换已足够,如我的回答所示。