Wie lese ich eine einzelne Zeile CSV-Daten in Python?

93

Es gibt viele Beispiele für das Lesen von CSV-Daten mit Python, wie dieses:

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

Ich möchte nur eine Datenzeile lesen und in verschiedene Variablen eingeben. Wie mache ich das? Ich habe überall nach einem funktionierenden Beispiel gesucht.

Mein Code ruft nur den Wert für i und keinen der anderen Werte ab

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
quelle
Wie ist die Struktur Ihres CSV? Was ist, rowwenn Sie durch den Leser iterieren?
dm03514

Antworten:

145

Um nur die erste Zeile der CSV-Datei zu lesen, verwenden Sie next()das Reader-Objekt.

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)

oder :

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

Sie könnten nur die erste Reihe bekommen wie:

with open('some.csv', newline='') as f:
  csv_reader = csv.reader(f)
  csv_headings = next(csv_reader)
  first_line = next(csv_reader)
dm03514
quelle
2
Wahrscheinlich ist es gut, "mit open ('csv_file', 'r')" als f: csv_reader = csv.reader (f) ... "
hinzuzufügen
23

Sie können die Pandas-Bibliothek verwenden, um die ersten Zeilen aus dem riesigen Datensatz zu lesen.

import pandas as pd

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

Die Anzahl der zu lesenden Zeilen können Sie im Parameter nrows angeben.

Aravind Krishnakumar
quelle
13

Aus der Python-Dokumentation :

Das Modul unterstützt das Parsen von Zeichenfolgen zwar nicht direkt, kann aber problemlos durchgeführt werden:

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

Legen Sie einfach Ihre Zeichenfolgendaten in einer Singleton-Liste ab.

Robert Elwell
quelle
8

Der einfache Weg, um eine Zeile in einer CSV-Datei abzurufen

import csv
csvfile = open('some.csv','rb')
csvFileArray = []
for row in csv.reader(csvfile, delimiter = '.'):
    csvFileArray.append(row)
print(csvFileArray[0])
Oscar.Chou
quelle
3
Damit dies in Python3 funktioniert, entfernen Sie einfach das 'b' in 'rb'
Ricky Avina
1
Das funktioniert einfach, eigentlich ohne die delimiter='.'.
Suvtfopw
1
Um die Posterfrage zu beantworten, fügen Sie einfach ein breaknach dem hinzu csvFileArray.append(row)und es wird nur die erste Zeile gelesen.
StratusBase LLC
5

Nur als Referenz kann eine forSchleife verwendet werden, nachdem die erste Zeile abgerufen wurde, um den Rest der Datei abzurufen:

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
quelle
2

So drucken Sie einen Zeilenbereich, in diesem Fall von Zeile 4 bis 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
quelle