Jak odczytać pojedynczy wiersz danych CSV w Pythonie?

89

Istnieje wiele przykładów odczytu danych CSV za pomocą Pythona, takich jak ten:

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

Chcę tylko przeczytać jedną linię danych i wprowadzić ją do różnych zmiennych. Jak mogę to zrobić? Szukałem wszędzie działającego przykładu.

Mój kod pobiera tylko wartość dla i, a żadne inne wartości

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
źródło
jaka jest struktura twojego csv? Co się dzieje, rowgdy przechodzisz przez czytnik?
dm03514

Odpowiedzi:

141

Aby odczytać tylko pierwszy wiersz pliku csv, użyj next()obiektu czytnika.

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)

lub:

with open('some.csv', newline='') as f:
  reader = csv.reader(f)
  for row in reader:
    # do something here with `row`
    break
Ashwini Chaudhary
źródło
38

możesz uzyskać tylko pierwszy wiersz, na przykład:

with open('some.csv', newline='') as f:
  csv_reader = csv.reader(f)
  csv_headings = next(csv_reader)
  first_line = next(csv_reader)
dm03514
źródło
2
Prawdopodobnie dobrze jest dodać „with open ('csv_file', 'r')” jako f: csv_reader = csv.reader (f) ... ”
Sanchit
23

Możesz użyć biblioteki Pandas, aby przeczytać kilka pierwszych wierszy z ogromnego zbioru danych.

import pandas as pd

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

Możesz wspomnieć o liczbie wierszy do odczytania w parametrze nrows.

Aravind Krishnakumar
źródło
13

Z dokumentacji Pythona :

I chociaż moduł nie obsługuje bezpośrednio analizowania ciągów, można to łatwo zrobić:

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

Po prostu upuść dane ciągu na listę singletonów.

Robert Elwell
źródło
8

Prosty sposób na uzyskanie dowolnego wiersza w pliku csv

import csv
csvfile = open('some.csv','rb')
csvFileArray = []
for row in csv.reader(csvfile, delimiter = '.'):
    csvFileArray.append(row)
print(csvFileArray[0])
Oscar.Chou
źródło
3
Aby to zadziałało w pythonie3, po prostu usuń „b” z „rb”
Ricky Avina
1
To po prostu działa, właściwie bez delimiter='.'.
suvtfopw
1
Aby odpowiedzieć na pytanie dotyczące plakatów, po prostu dodaj znak breakpo znaku, csvFileArray.append(row)a zostanie odczytany tylko pierwszy wiersz.
StratusBase LLC
4

Dla porównania, forpo pobraniu pierwszego wiersza można użyć pętli, aby pobrać resztę pliku:

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
źródło
2

Aby wydrukować zakres linii, w tym przypadku od linii 4 do 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
źródło