Python'da tek satırlık csv verisi nasıl okunur?


94

Bunun gibi python kullanarak csv verilerini okumanın birçok örneği vardır:

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

Sadece bir satırlık veriyi okumak ve çeşitli değişkenlere girmek istiyorum. Bunu nasıl yaparım? Çalışan bir örnek için her yere baktım.

Kodum yalnızca i değerini alıyor ve diğer değerlerin hiçbirini almıyor

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

csv'nizin yapısı nedir? rowOkuyucu aracılığıyla yinelediğiniz zaman nedir ?
dm03514

Yanıtlar:


145

Csv dosyasının yalnızca ilk satırını okumak next()için okuyucu nesnesini kullanın .

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)

veya:

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

38

sadece ilk satırı şu şekilde alabilirsiniz:

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

2
"... csv_reader = csv.reader (f): Muhtemelen, bu f olarak "açık ( 'csv_file', 'r') ile" eklemek iyidir
Sanchit

23

Büyük veri kümesinin ilk birkaç satırını okumak için Pandas kitaplığını kullanabilirsiniz.

import pandas as pd

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

Nrows parametresinde okunacak satır sayısını belirtebilirsiniz.


14

Gönderen Python belgelerinde :

Modül, dizelerin ayrıştırılmasını doğrudan desteklemese de, kolaylıkla yapılabilir:

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

Dize verilerinizi tek bir listeye bırakın.


8

CSV dosyasındaki herhangi bir satırı almanın basit yolu

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

3
Bunun python3'te çalışmasını sağlamak için, 'rb'deki' b 'harfini kaldırın
Ricky Avina

1
Bu, aslında delimiter='.'.
suvtfopw

1
Afişler soruya cevap vermek için sadece eklemek breaksonra csvFileArray.append(row)ve sadece ilk satırı okuyacaktır.
StratusBase LLC

5

Sadece referans için for, dosyanın geri kalanını almak için ilk satırı aldıktan sonra bir döngü kullanılabilir:

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

Bir dizi satır yazdırmak için, bu durumda 4. satırdan 7. satıra kadar

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)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.