Come leggere una singola riga di dati CSV in Python?


94

Ci sono molti esempi di lettura di dati CSV usando Python, come questo:

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

Voglio solo leggere una riga di dati e inserirla in varie variabili. Come lo faccio? Ho cercato ovunque un esempio funzionante.

Il mio codice recupera solo il valore per i e nessuno degli altri valori

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])

qual è la struttura del tuo csv? Cosa succede rowquando stai iterando attraverso il lettore?
dm03514

Risposte:


145

Per leggere solo la prima riga del file csv utilizzare next()sull'oggetto lettore.

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)

o :

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

38

potresti ottenere solo la prima riga come:

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

2
Probabilmente, è bene aggiungere "with open ('csv_file', 'r')" come f: csv_reader = csv.reader (f) ... "
Sanchit

23

Puoi utilizzare la libreria Pandas per leggere le prime righe dall'enorme set di dati.

import pandas as pd

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

Puoi menzionare il numero di righe da leggere nel parametro nrows.


14

Dalla documentazione di Python :

E sebbene il modulo non supporti direttamente l'analisi delle stringhe, può essere fatto facilmente:

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

Basta inserire i dati della stringa in un elenco singleton.


8

Il modo più semplice per ottenere qualsiasi riga nel file CSV

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

3
Per fare in modo che funzioni in python3, è sufficiente rimuovere la "b" in "rb"
Ricky Avina

1
Funziona, in realtà senza l'estensione delimiter='.'.
suvtfopw

1
Per rispondere alla domanda dei poster, aggiungi semplicemente un breakdopo csvFileArray.append(row)e leggerà solo la prima riga.
StratusBase LLC

5

Solo per riferimento, è forpossibile utilizzare un ciclo dopo aver ottenuto la prima riga per ottenere il resto del file:

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

3

Per stampare un intervallo di righe, in questo caso dalla riga 4 alla 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)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.