2016-07-23 74 views
0

我在這裏是新的,也是新的編程與python 作爲一個練習,我必須從多行txt文件中讀取數據(經緯度& lon)並將它們轉換爲與QGIS我想從文本文件傳輸數據到數組

SHAPEFILE閱讀中,我找到一種方法來提取數據到數組,作爲第一步後,但我有SOEM問題..

我用下面的代碼

X=[] 
Y=[] 
f = open('D:/test_data/test.txt','r') 
for line in f: 
    triplets=f.readline().split() #error 
X=X.append(triplets[0]) 
Y=Y.append(triplets[1]) 
f.close() 
for i in X: 
    print X[i] 

錯誤:

ValueError: Mixing iteration and read methods would lose data 

顯然這是一個失去其他行的警告,但我現在真的不希望他們。

回答

3

for line in f:已經迭代獲取三胞胎,閱讀,因爲它去一起。因此,它應該是:

for line in f: 
    triplets = line.split() 

或者,您可以按照以下方法操作,儘管我推薦上述方法。

with open('D:/test_data/test.txt','r') as f: 
    content = f.readlines() 
    for line in content: 
     triplets = line.split() 
     # append() 

更多信息,請參見Reading and Writing Files的蟒蛇。

此外,append()做它聽起來像,所以你不需要分配。

X.append(triplets[0]) # not X=X.append(triplets[0) 
+0

這似乎工作。現在在我嘗試打印什麼,我從 讀取我得到的錯誤: TypeError:列表索引必須是整數,而不是str 在最後一行,我嘗試打印X [我] 我知道這些是字符串,並有在浮點轉換,但使用 X.append(float(triplets [0]))給我的錯誤: ValueError:無效文字爲float():49,24 –

+0

@NasosGkimi'我在X:'會直接迭代通過'X'的元素。也就是說,'i'是一個'X'字符串,而不是索引。因此,如果你想使用索引進行迭代 - 在這裏我沒有真正看到這一點 - 你可以使用'for in in(len(X))'來打印(i)' – Ramon

+0

@NasosGkimi,或者'對於我,元素枚舉(X)',其中'i'是索引,'elem'是相應的字符串元素。 – Ramon

0

line已經是行。通過文件中的行由

triplets = line.split() 
+0

我讓個改變,我得到一個新的錯誤 類型錯誤:「海峽」對象不是可調用 –

相關問題