2017-10-12 116 views
0

我有這樣的代碼訂購文件

archivo=open("archivo.csv","r") 
for i in range(10): 
    for reg in archivo: 
     if archivo[reg] < archivo[reg+1]: 
      x = archivo[reg] 
      archivo[reg] = archivo[reg+1] 
      archivo[reg+1] = x 
archivo.close() 
archivo = open("archivo.csv","w") 
archivo.write(reg) 

我要的是字母順序的文件,並保存它有序,但我有幾個錯誤。主要的一個說,該文件沒有屬性getitem和在網絡上我沒有發現任何平等。有人能幫我嗎?

輸入看起來像

Matt | 7 | 8 
John | 9 | 6 
Jim | 6 | 7 
+0

輸入是什麼樣的?只有幾行就足夠了。另外爲什麼'爲我在範圍(10):'。只會有一行讀取一次,所以其他9次迭代什麼也不做。基本上你需要做的是將每一行讀成某種形式,在這些形式中它們可以進行比較和排序,目前你只是比較持有這些行的字符串。考慮你也有'csv'模塊,如果你能夠使用它,這可能只是你的任務。 –

+0

for行是因爲如果位置7中以「a」開頭的項目被排序一次,它將不在第一個位置。如果您有另一個訂購文件系統的系統,請分享它,因爲不是特定的。 – MattZ

+0

我不明白你在說什麼輸入 – MattZ

回答

1

我已經修改了源CSV文件被逗號分隔。所以archivo.csv看起來

Matt,7,8 
John,9,6 
Jim,6,7 

我們讀取該文件,蟒蛇已經有了標準模塊調用csv。使用它我們可以可靠地讀寫csv。

from csv import reader, writer 
archivo=reader(open("archivo.csv","r")) 
a = sorted(archivo) 
archivo1 = writer(open("archivo1.csv", "w")) 
for row in a: 
    archivo1.writerow(row) 
+0

哦很多很多謝謝,工作。現在我將在學校得到10分 – MattZ