2017-02-02 1 views
0

Actuellement, je travaille sur un code de bataille navale pour mon projet de calcul avancé avancé et j'en suis au dernier obstacle. J'essaie d'importer un fichier CSV nommé "leaderboard.csv" qui contient deux colonnes avec des en-têtes dans le fichier csv (Names and Shots) les données à l'intérieur ressemble à ceci.Problème avec l'importation de deux colonnes dans un fichier CSV vers deux tableaux différents


Noms - Tirs


Nom1 - 19

Nom2 - 24

ainsi de suite ... - ...


Cette section du code prend dans les données et stocke tous les noms dans aNames [] puis tous les coups dans aShots [] Cela fonctionne comme prévu pour aNames tous les noms sont stockés dans le tableau et je peux alors travailler avec eux cependant le tableau aShots est complètement vide et c'est le même code plus ou moins avec le titre changé et c'est tout. Le code ressemble à ceci.

def ChangeFileToArray(): 
     from csv import DictReader 
     with open("leaderboard.csv") as f: 
      #Where "Names" and "Shots" are the names of the headings in the CSV file. 
      aNames=[row["Names"] for row in DictReader(f)] 
      aShots=[row["Shots"] for row in DictReader(f)] 
    f.close 
    return aNames, aShots 

La sortie du fichier est comme après tout le fluff précédent.


[ 'Name1', 'Nom2', 'Nom3', 'Nom4']

[]


J'ai regardé ma solution avant et beaucoup de gens disent utiliser solution pandas mais ce n'est pas une option pour moi malheureusement. Je préférerais de préférence le conserver dans le module csv (importé). Merci d'avance.

+1

Il n'y a plus rien à lire dans 'f' après votre première compréhension de la liste. – fenceop

+0

Ce n'est pas tout le fichier csv cependant, tous les coups sont dans le fichier csv intacts ou je ne comprends pas ce que f est. – Robalineo

+0

Essayez d'ajouter 'f.seek (0)' avant votre seconde compréhension. – fenceop

Répondre

0

Je ne suis pas fraîche sur le DictReader mais j'essaierais quelque chose dans le sens du code ci-dessous. Si vous parcourez les lignes de DictReader, vous gérez toutes les opérations que vous voulez pour chaque ligne en même temps.

aNames = [] 
aShots = [] 
for row in DictReader(f): 
    aNames.append(row["Names"]) 
    aShots.append(row["Shots"]) 
f.close()