python ecrire dans un csv, faire une boucle for dans le writerow

a marqué ce sujet comme résolu.

Bonjour, j’écris des données dans un fichier csv comme ceci :

1
2
3
4
5
6
7
        csvfile = open("myfile.csv", "a")
        fieldnames=["Parameters1","Parameters2","Parameters3"]
        data=[1,2,3]
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
        writer.writerow({'Parameters1': data[0], 'Parameters2': data[1], 'Parameters3': data[2]})

`

je voudrais remplacer ma dernière ligne :

1
writer.writerow({'Parameters1': data[0], 'Parameters2': data[1], 'Parameters3': data[2]})

par une boucle for comme ceci :

1
writer.writerow({fieldnames[i]: data[i] for i in range(0,len(data))})

j’ai une erreur de syntaxe, je voudrais savoir quel est la bonne syntaxe, car ne ne vois pas trop comment l’écrire autrement, j’ai essayer de remplacer le : par une , mais j’ai le meme résultat

+0 -0

Salut,

Est-ce que ceci pourrait te convenir ?

1
2
3
4
5
#!/usr/bin/env python3

fields = ["Field1", "Field2", "Field3"]
data = ["data1", "data2", "data3"]
writer.writerow(dict(zip(fields, data)))

Avec zip tu construis une liste de tuples avec les éléments de chaque liste puis simplement dict pour obtenir un dictionnaire.

+1 -0
1
writer.writerow({fieldnames[i]: data[i] for i in range(0,len(data))})

Tiens, je ne savais pas qu’on pouvait faire ça en Python, mais j’ai testé chez moi et ça marche. Tu m’apprends un truc.

Je ne vois pas de problème dans le code, quelle est l’erreur de syntaxe que tu reçois ?

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte