2010-10-28 102 views
0

我的Python非常生鏽。我有一個成本爲字符串的列表。我試圖將它們轉換爲浮點數,但是當成本高於1000美元時,該值用逗號表示。 float(「1,000」)返回錯誤:float(「1,000」)有什麼問題?

Traceback (most recent call last): 
File "<pyshell#5>", line 1, in <module> 
    decimal("1,000") 
TypeError: 'module' object is not callable 

我知道這可能是微不足道的,但是您有解決方案嗎?

回答

3

decimal不是float。十進制是一個模塊。這就是你得到錯誤的原因。

至於逗號,先刪除他們:

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

重新使用要轉換爲浮動之前,刪除任何「」格式。

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

're'是矯枉過正。如我的答案所示,'replace'就足夠了。 – 2010-10-28 00:18:36

+0

謝謝,但同意爲此進行導入是過度的 – datayoda 2010-10-28 00:23:06

1

加薪的錯誤是因爲你試圖調用這樣的模塊:

>>> 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') 

所以你可以像下面這樣做

+0

在這個問題中,逗號用作千位分隔符。你的結果是不同的。 – 2010-10-28 00:17:19

+0

@Muhammad Alkarouri:ohhh謝謝我沒有很好地閱讀這個問題:) – mouad 2010-10-28 00:20:14