Python 什么';“1000”浮点数有什么问题吗?
我的蟒蛇生锈了。我有一个字符串的成本列表。我试图将它们转换为浮动,但当成本高于1000美元时,该值用逗号表示。float(“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 回溯(最近一次呼叫最后一次): 文件“”,第
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
太过分了<代码>替换已足够,如我的回答所示。