2010-05-12 294 views
6

我有一個包含6,52353753563E-7形式的數字的大文件。所以這個字符串中有一個指數。 float()就此死亡。雖然我可以編寫自定義代碼來將字符串預處理爲float()可以吃的東西,但我正在尋找將這些轉換爲float的pythonic方式(類似於傳遞到某處的格式字符串)。我必須說我很驚訝float()不能處理這樣一個指數的字符串,這是很常見的東西。在Python中解析表示具有指數*的浮點數*的字符串

我使用python 2.6,但如果需要的話,3.1是一個選項。

回答

13

與指數無關。問題是逗號而不是小數點。

>>> float("6,52353753563E-7") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: invalid literal for float(): 6,52353753563E-7 
>>> float("6.52353753563E-7") 
6.5235375356299998e-07 

對於一般方法,參見locale.atof()

+0

正確。順便提一下,如果在Python提示符中輸入「6,52353753563E-7」,它將被解析爲元組(6,5235.3753563) - 這很明顯,爲什麼它看起來很奇怪。 – 2010-05-12 22:47:40

+0

啊,謝謝。當計時器讓我時,我會將其標記爲已接受。 – Lucas 2010-05-12 22:47:53

+0

在相關說明中,我可以以某種方式讓python識別逗號嗎? C#和Java可以做到這一點。世界上許多地方都使用逗號作爲小數點分隔符。 – Lucas 2010-05-12 22:50:33

1

你的問題不是在指數卻在逗號。 with python 3.1:

>>> a = "6.52353753563E-7" 
>>> float(a) 
6.52353753563e-07