2017-10-12 12 views
0

je ce codeCommander un fichier

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) 

Ce que je veux est à l'ordre alphabétique des fichiers et pour le sauver ordonné, mais j'ai plusieurs erreurs. Le principal dit que le fichier n'a pas d'attribut getitem et dans le web je n'ai rien trouvé d'égal. Est-ce que quelqu'un peut m'aider?

entrée ressemble

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

À quoi ressemble l'entrée? Seules quelques lignes suffiraient. Aussi pourquoi 'pour i dans la gamme (10):'. Il n'y aurait que des lignes à lire une seule fois, les neuf autres ne feraient rien. Fondamentalement, ce que vous devez faire est de lire chaque ligne dans une sorte de forme où ils peuvent être comparés et ordonnés, à l'heure actuelle vous êtes juste en train de comparer les chaînes qui tiennent les lignes elles-mêmes. Considérez aussi que vous avez le module 'csv' à votre disposition, ce qui pourrait simplement être votre tâche si vous êtes capable de l'utiliser. –

+0

La ligne for est parce que si un article en position 7 qui commence par un "a" par exemple est commandé une fois, il ne serait pas dans la première position. Si vous avez un autre système de commande de lignes de fichiers, merci de le partager car il n'est pas spécifique. – MattZ

+0

Et je ne comprends pas de quelle entrée parlez-vous – MattZ

Répondre

1

J'ai modifié le fichier CSV source à séparés par des virgules. Alors archivo.csv ressemble

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

Maintenant, pour lire ce fichier, python a déjà module standard appelé csv. En utilisant cela, nous pouvons lire et écrire du csv de manière fiable.

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

Oh beaucoup de mercis qui ont fonctionné. Maintenant, je vais avoir un 10 à l'école – MattZ