J'ai un fichier example.csv
avec le contenu
1,"A towel,",1.0
42," it says, ",2.0
1337,is about the most ,-1
0,massively useful thing ,123
-2,an interstellar hitchhiker can have.,3
Comment lire ce example.csv
avec Python?
De même, si j'ai
data = [(1, "A towel,", 1.0),
(42, " it says, ", 2.0),
(1337, "is about the most ", -1),
(0, "massively useful thing ", 123),
(-2, "an interstellar hitchhiker can have.", 3)]
Comment écrire data
dans un fichier CSV avec Python?
Voici quelques exemples minimaux et complets de lecture de fichiers CSV et d’écriture de fichiers CSV avec Python.
Pur python
# -*- coding: utf-8 -*-
import csv
import sys
# Define data
data = [(1, "A towel,", 1.0),
(42, " it says, ", 2.0),
(1337, "is about the most ", -1),
(0, "massively useful thing ", 123),
(-2, "an interstellar hitchhiker can have.", 3)]
# Write CSV file
kwargs = {'newline': ''}
mode = 'w'
if sys.version_info < (3, 0):
kwargs.pop('newline', None)
mode = 'wb'
with open('test.csv', mode, **kwargs) as fp:
writer = csv.writer(fp, delimiter=',')
# writer.writerow(["your", "header", "foo"]) # write header
writer.writerows(data)
# Read CSV file
kwargs = {'newline': ''}
mode = 'r'
if sys.version_info < (3, 0):
kwargs.pop('newline', None)
mode = 'rb'
with open('test.csv', mode, **kwargs) as fp:
reader = csv.reader(fp, delimiter=',', quotechar='"')
# next(reader, None) # skip the headers
data_read = [row for row in reader]
print(data_read)
Après cela, le contenu de data_read
est
[['1', 'A towel,', '1.0'],
['42', ' it says, ', '2.0'],
['1337', 'is about the most ', '-1'],
['0', 'massively useful thing ', '123'],
['-2', 'an interstellar hitchhiker can have.', '3']]
Si vous voulez écrire en Unicode, vous devez installer unicodecsv
. Ne pas ouvrez le fichier avec codecs.open
mais simplement avec open
. Écris-le avec
import unicodecsv as csv
# Write CSV file
with open('test.csv', 'w', newline='') as fp:
writer = csv.writer(fp, encoding='utf-8')
# writer.writerow(["your", "header", "foo"]) # write header
writer.writerows(data)
Jetez un coup d’œil à mon paquet d’utilitaire mpu
pour un modèle simple et facile à mémoriser:
import mpu.io
data = mpu.io.read('example.csv', delimiter=',', quotechar='"', skiprows=None)
mpu.io.write('example.csv', data)
import pandas as pd
# Read the CSV into a pandas data frame (df)
# With a df you can do many things
# most important: visualize data with Seaborn
df = pd.read_csv('myfile.csv', sep=',')
print(df)
# Or export it in many ways, e.g. a list of tuples
tuples = [Tuple(x) for x in df.values]
# or export it as a list of dicts
dicts = df.to_dict().values()
Voir read_csv
docs pour plus d’informations. Veuillez noter que les pandas déduisent automatiquement s'il y a une ligne d'en-tête, mais vous pouvez aussi la définir manuellement.
Si vous n'avez pas entendu parler de Seaborn , je vous recommande de jeter un coup d'œil.
La lecture de fichiers CSV est prise en charge par de nombreuses autres bibliothèques, par exemple:
1,"A towel,",1.0
42," it says, ",2.0
1337,is about the most ,-1
0,massively useful thing ,123
-2,an interstellar hitchhiker can have.,3
.csv
Après avoir lu le fichier CSV dans une liste de tuples/dicts ou dans un cadre de données Pandas, vous travaillez simplement avec ce type de données. Rien de spécifique CSV.
Pour votre application, les éléments suivants peuvent être importants:
Voir aussi: Comparaison des formats de sérialisation des données
Si vous cherchez plutôt un moyen de créer des fichiers de configuration, vous pouvez lire mon court article Fichiers de configuration en Python
D'abord, vous devez importer le csv
Par exemple:
import csv
with open('eggs.csv', 'wb') as csvfile:
spamwriter = csv.writer(csvfile, delimiter=' ',
quotechar='|', quoting=csv.QUOTE_MINIMAL)
spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
import csv
with open(fileLocation+'example.csv',newline='') as File: #the csv file is stored in a File object
reader=csv.reader(File) #csv.reader is used to read a file
for row in reader:
print(row)