2014-04-28 61 views
1

我在將str轉換爲float時遇到問題。我喜歡在this post但這次它不工作,因爲我在這個格式有一個數字:字符串未按預期轉換爲浮點型號

5.50000e+000 5.50000e+001 5.50000e+002 5.50000e+003 

如果我改變的格式(例如,使用5.5 55 550 5500),它工作正常。追溯狀態僅:

Traceback (most recent call last): 
    File "phresREADER.py", line 27, in <module> 
    tra = float(stri) 
ValueError: could not convert string to float: 

我該怎麼辦?有沒有特定的命令?

我的代碼是:

my_line = f.readline() 
avg_energySTR = [str(i) for i in my_line.split(' ')] 
for stri in avg_energySTR: 
     tra = float(stri) 

當我打印avg_energySTR我得到

[ '5.50000e + 000', '5.50000e + 001', '5.50000e + 002',「5.50000e 003' ,‘\ n’]

的答案是小次郎的評論

+2

'float(「5.50000e + 000」)'適合我。 –

+0

也適用於我,蟒蛇2.7,你能告訴我們你的輸出/追溯? –

+0

剛剛在Python2.7和Python3.3'float('5.50000e + 000')'outputs' 5.5',float(5.50000e + 000)'輸出'5.5'的控制檯中測試過,即使只是輸入'5.50000e + 000'輸出'5.5' – jshanley

回答

1

您在列表細胞的一個有'\n'

所以當迭代嘗試轉換'\n'漂浮它引發ValueError

試試這個代碼:

avg_energySTR = "5.50000e+000 5.50000e+001 5.50000e+002 5.50000e+003" 
avg_energySTR = [str(i) for i in avg_energySTR.split()] 
avg_energy = [] 
for stri in avg_energySTR: 
     tra = float(stri) 
     avg_energy.append(tra) 
print (avg_energy) 

你也可以在拆分本身:

avg_energySTR = "5.50000e+000 5.50000e+001 5.50000e+002 5.50000e+003 \n" 
avg_energy = [] 
for stri in avg_energySTR.split(): 
     ....... 
+0

or just'avg_energy = [float(stri)for stri in avg_energySTR.split()]' – kojiro

1

更改:

avg_energySTR = [str(i) for i in my_line.split(' ')] 

要:

avg_energySTR = my_line.split() 

從評論,似乎你在該行的末尾有多餘的空格。如果您使用默認分割算法(通過傳遞任何參數或傳遞None),則會忽略尾隨空白。