Как прочитать одну строку данных 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)
dm03514
источник
2
Наверное, хорошо добавить «with open ('csv_file', 'r') как f: csv_reader = csv.reader (f) ...»
Санчит
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'
Рики Авина
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)
Биплоб Дас
источник