2013-06-03 249 views
0

我有下面的代碼有問題:ValueError異常:無法將字符串轉換爲float:

inputf = open('test.dat', 'r') 
lines = inputf.readlines() 
rico_clus_e = [] 
for line in lines: 
    line.split() 
    print line 
    if (line[0] != '#'): 
     rico_clus_e.append(float(line[4])) 
inputf.close() 

我TEST.DAT文件是:

# specn rico_all  rico_all_e rico_clus rico_clus_e rico_farclust rico_far_e extin 
a119  1.07038692 0.11109547 0.61473431 0.15063627 0.32590239  0.14777812 0.207 

這給出了下面的輸出我終端:

# specn rico_all  rico_all_e rico_clus rico_clus_e rico_farclust rico_far_e extin 

a119  1.07038692 0.11109547 0.61473431 0.15063627 0.32590239  0.14777812 0.207 

Traceback (most recent call last): 
    File "test.py", line 8, in <module> 
    rico_clus_e.append(float(line[4])) 
ValueError: could not convert string to float: 

我對此很困惑。它與空間無關,我檢查了所有。如果你改變1,2或3這個工作,所以它必須有關於test.dat文件,但我似乎無法弄清楚如何。我正在使用python 2.7.3。

+0

元素的表示(提示:'repr()')是...? –

+0

該表示是'' –

回答

1

line.split()本身對line沒有任何影響。您必須存儲方法調用的結果並使用它。

+0

但爲什麼它可以用於其他值?將4改爲3,2或1確實有效......對於數字3,表示爲'9',對於元素2則爲'1' –

+0

這是因爲'行[3]'是'9','line [2]'是''''。而'line [0]'是''a''。 –

+0

好的,我明白你的迴應。它認爲「9」是內在的東西,但它只是指字符串。 'line = line.split()'是訣竅。謝謝! –

相關問題