2017-10-12 115 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