Bagaimana cara membaca satu baris data csv dengan Python?

94

Ada banyak sekali contoh pembacaan data csv menggunakan python, seperti ini:

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

Saya hanya ingin membaca satu baris data dan memasukkannya ke dalam berbagai variabel. Bagaimana aku melakukan itu? Saya telah mencari ke mana-mana untuk contoh kerja.

Kode saya hanya mengambil nilai untuk i, dan tidak ada nilai lainnya

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.dll
sumber
apa struktur csv Anda? Apa rowsaat Anda mengulang melalui pembaca?
dm03514

Jawaban:

145

Untuk membaca hanya baris pertama dari file csv digunakan next()pada objek pembaca.

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)

atau :

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

Anda bisa mendapatkan baris pertama seperti:

with open('some.csv', newline='') as f:
  csv_reader = csv.reader(f)
  csv_headings = next(csv_reader)
  first_line = next(csv_reader)
dm03514
sumber
2
Mungkin, ada baiknya menambahkan "with open ('csv_file', 'r')" sebagai f: csv_reader = csv.reader (f) ... "
Sanchit
23

Anda dapat menggunakan pustaka Pandas untuk membaca beberapa baris pertama dari kumpulan data yang sangat besar.

import pandas as pd

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

Anda dapat menyebutkan jumlah baris yang akan dibaca di parameter nrows.

Aravind Krishnakumar
sumber
14

Dari dokumentasi Python :

Dan sementara modul tidak secara langsung mendukung parsing string, itu dapat dengan mudah dilakukan:

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

Letakkan saja data string Anda ke dalam daftar tunggal.

Robert Elwell
sumber
8

Cara sederhana untuk mendapatkan baris apa pun di file csv

import csv
csvfile = open('some.csv','rb')
csvFileArray = []
for row in csv.reader(csvfile, delimiter = '.'):
    csvFileArray.append(row)
print(csvFileArray[0])
Oscar.Chou
sumber
3
Untuk membuat ini bekerja di python3, cukup hapus 'b' di 'rb'
Ricky Avina
1
Ini hanya berfungsi, sebenarnya tanpa file delimiter='.'.
suvtfopw
1
Untuk menjawab pertanyaan poster, tambahkan saja breaksetelah csvFileArray.append(row)dan itu hanya akan membaca baris pertama.
StratusBase LLC
5

Hanya untuk referensi, forloop bisa digunakan setelah mendapatkan baris pertama untuk mendapatkan sisa 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
Emerson Peters
sumber
3

Untuk mencetak berbagai garis, dalam hal ini dari baris 4 hingga 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
sumber