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])
andrebruton
la source
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
Ashwini Chaudhary
la source
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)
dm03514
la source
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.

Aravind Krishnakumar
la source
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.

Robert Elwell
la source
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])
Oscar Chou
la source
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
Emerson Peters
la source
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)
Biplob Das
la source