Як прочитати один рядок CSV-даних у Python?


90

Є багато прикладів читання csv-даних за допомогою python, як цей:

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

Я хочу прочитати лише один рядок даних і ввести їх у різні змінні. Як це зробити? Я всюди шукав робочий приклад.

Мій код отримує лише значення i, і жодне з інших значень

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? Що робити, rowколи ви переглядаєте читач?
dm03514

Відповіді:


142

Для читання лише першого рядка файлу csv використовуйте next()об'єкт зчитування.

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)

або:

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

38

ви можете отримати лише перший рядок, наприклад:

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

2
Можливо, це добре , щоб додати "з відкритою ( 'csv_file', 'г')" , як F: csv_reader = csv.reader (ф) ... »
Sanchit

23

Ви можете використовувати бібліотеку Pandas, щоб прочитати перші кілька рядків з величезного набору даних.

import pandas as pd

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

Ви можете вказати кількість рядків, які слід прочитати, у параметрі nrows.


13

З документації на Python :

І хоча модуль не підтримує безпосередній розбір рядків, це легко можна зробити:

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

Просто залиште свої рядкові дані в єдиний список.


8

Простий спосіб отримати будь-який рядок у файлі CSV

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

3
Щоб зробити цю роботу в python3, просто видаліть "b" у "rb"
Ricky Avina

1
Це просто працює, насправді без delimiter='.'.
suvtfopw

1
Щоб відповісти на запитання плакатів, просто додайте знак breakпісля, csvFileArray.append(row)і він прочитає лише перший рядок.
StratusBase LLC,

4

Тільки для довідки, forцикл можна використовувати після отримання першого рядка для отримання решти файлу:

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

2

Щоб надрукувати діапазон рядків, у цьому випадку від рядків 4 до 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)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.