Ceci est un supplément au module python CSV mentionné précédemment.
Honnêtement, vous pouvez le comprendre par document ou par google, Gardez-le comme un mémorandum
Si vous souhaitez ouvrir un fichier CSV et l'écrire dans un autre fichier tel quel Utilisez la méthode du lecteur pour passer au format liste
À ce stade, la valeur de retour de la méthode de lecture est bien entendu au format liste.
import csv
data=[]
#Lire CSV au format liste
with open('data.csv' , 'r', newline='' , encoding='utf-8') as f:
r = csv.reader(f)
data = [ i for i in r ]
#Écrire CSV au format liste
with open('data.csv' , 'w', newline='' , encoding='utf-8') as f:
w = csv.writer(f)
w.writerows(data)
À ce stade, les données seront une liste multiple comme indiqué ci-dessous.
[['python', '1'], ['php', '1']]
Lors de l'écriture avec writerow, une liste est passée en argument, Notez que dans le cas de plusieurs listes comme ci-dessus, vous devez écrire des lignes
Si vous essayez d'écrire une ligne, la valeur de retour sera la suivante (renvoyée sous forme de liste sur une ligne)
"['python', '1']","['php', '1']"
Si vous écrivez des lignes, la valeur de retour sera la suivante.
python,2
php,2
Utilisez la méthode DictReader pour passer au format dictionnaire
À ce stade, la valeur de retour de la méthode DictReader est bien entendu au format dictionnaire.
from collections import defaultdict
import csv
data = defaultdict(int)
with open('data.csv' , 'r', newline='' , encoding='utf-8') as f:
r = csv.DictReader(f)
data = [ i for i in r ] #Enregistrer le dictionnaire dans la liste
with open('data.csv' , 'w', newline='' , encoding='utf-8') as f:
fieldnames =['Name', 'Count']
w = csv.DictWriter(f, fieldnames= fieldnames)
w.writerows(data)
Si vous regardez à l'intérieur des variables comme dans le cas de la liste, les variables de données seront les suivantes
[{'Name': 'python', 'Count': '1'}, {'Name': 'php', 'Count': '1'}]
Cette fois, les clés et les valeurs sont présentées sous forme de dictionnaire
Lors de l'écriture, la liste est passée en argument à la méthode writerow En fait, cela devient une image de passage du contenu du dictionnaire dans une liste
Si vous essayez d'écrire avec writerow comme dans le cas de la liste, une erreur d'attribut se produira comme suit Je me fâche que l'objet liste n'ait pas d'attribut appelé clé
AttributeError: 'list' object has no attribute 'keys'
Si vous utilisez writerows, vous pouvez écrire comme suit comme dans le cas de list
python,1
php,1
J'ai compris que la méthode writerows est utilisée lors du passage à la fois de la liste de base et du dictionnaire plusieurs fois.
Recommended Posts