2009-09-07 47 views
2

比方說,我有這樣的字符串:'12,423,343.93'。如何用簡單,有效和優雅的方式將其轉換爲float刪除字符串中的多餘符號

看來我需要從字符串中刪除多餘的逗號,然後調用float(),但我沒有很好的解決方案。

感謝

回答

9
s = "12,423,343.93" 
f = float(s.replace(",", "")) 
+0

謝謝!我試過.replace(),但認爲它不能替換爲空字符串,所以很傻... – bocco 2009-09-07 19:30:06

+0

呵呵,這不是Oracle,空字符串與null不一樣。 :-)你也可以用''替換'',因爲空格有時也用作千位分隔符。 – bobince 2009-09-08 00:26:52

6

注意,使用的分隔符符號從國家而異。在某些文化中,「。」用於分隔組,「,」表示例如小數點。如果您像這樣解析用戶輸入的字符串,則最好使用語言環境模塊。例如:

>>> import locale 
>>> locale.atof('12,423,343.93') # No locale set yet, so this will refuse to parse 
ValueError: invalid literal for float(): 12,423,343.93 

>>> locale.setlocale(locale.LC_NUMERIC, "en_GB") # Use a UK locale. 
>>> locale.atof('12,423,343.93') 
12423343.93 
+1

我給你一個upvote,現在我不再確定。我確實喜歡這個想法,但今天我突然想起了便攜式語言環境是多麼的不可思議。在三臺機器上,我不得不使用三個不同的語言環境名稱來產生相同的結果。 – krawyoti 2009-09-08 08:04:56

+0

嗯。你可能有一點。剛剛在Windows系統上嘗試過,實際上locale的使用看起來很尷尬。您需要安裝確切的語言環境(包括字符集,即使它不需要進行數字處理),以便能夠進行設置。 – Brian 2009-09-08 11:15:19