Comment lire une seule ligne de données csv en Python?


90

Il existe de nombreux exemples de lecture de données csv à l'aide de python, comme celui-ci:

import csv
with open('some.csv', newline='') as f:
  reader = csv.reader(f)
  for row in reader:
    print(row)

Je veux seulement lire une ligne de données et la saisir dans diverses variables. Comment je fais ça? J'ai cherché partout un exemple fonctionnel.

Mon code ne récupère que la valeur de i, et aucune des autres valeurs

reader = csv.reader(csvfile, delimiter=',', quotechar='"')
for row in reader:
  i = int(row[0])
  a1 = int(row[1])
  b1 = int(row[2])
  c1 = int(row[2])
  x1 = int(row[2])
  y1 = int(row[2])
  z1 = int(row[2])

quelle est la structure de votre csv? Que se passe-t-il rowlorsque vous parcourez le lecteur?
dm03514

Réponses:


142

Pour lire uniquement la première ligne du fichier csv, utilisez next()sur l'objet lecteur.

with open('some.csv', newline='') as f:
  reader = csv.reader(f)
  row1 = next(reader)  # gets the first line
  # now do something here 
  # if first row is the header, then you can do one more next() to get the next row:
  # row2 = next(f)

ou :

with open('some.csv', newline='') as f:
  reader = csv.reader(f)
  for row in reader:
    # do something here with `row`
    break

38

vous pouvez obtenir juste la première ligne comme:

with open('some.csv', newline='') as f:
  csv_reader = csv.reader(f)
  csv_headings = next(csv_reader)
  first_line = next(csv_reader)

2
Probablement, il est bon d'ajouter "with open ('csv_file', 'r')" comme f: csv_reader = csv.reader (f) ... "
Sanchit

23

Vous pouvez utiliser la bibliothèque Pandas pour lire les premières lignes de l'énorme jeu de données.

import pandas as pd

data = pd.read_csv("names.csv", nrows=1)

Vous pouvez mentionner le nombre de lignes à lire dans le paramètre nrows.


13

À partir de la documentation Python :

Et même si le module ne prend pas directement en charge l'analyse des chaînes, cela peut facilement être fait:

import csv
for row in csv.reader(['one,two,three']):
    print row

Déposez simplement vos données de chaîne dans une liste de singleton.


8

Le moyen simple d'obtenir n'importe quelle ligne dans un fichier csv

import csv
csvfile = open('some.csv','rb')
csvFileArray = []
for row in csv.reader(csvfile, delimiter = '.'):
    csvFileArray.append(row)
print(csvFileArray[0])

3
Pour que cela fonctionne en python3, supprimez simplement le 'b' dans 'rb'
Ricky Avina

1
Cela fonctionne juste, en fait sans le delimiter='.'.
suvtfopw

1
Pour répondre à la question des affiches, ajoutez simplement un breakaprès le csvFileArray.append(row)et il ne lira que la première ligne.
StratusBase LLC

4

Juste pour référence, une forboucle peut être utilisée après avoir obtenu la première ligne pour obtenir le reste du fichier:

with open('file.csv', newline='') as f:
    reader = csv.reader(f)
    row1 = next(reader)  # gets the first line
    for row in reader:
        print(row)       # prints rows 2 and onward

2

Pour imprimer une plage de lignes, dans ce cas de la ligne 4 à 7

import csv

with open('california_housing_test.csv') as csv_file:
    data = csv.reader(csv_file)
    for row in list(data)[4:7]:
        print(row)
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.