Как прочитать одну строку данных 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
Наверное, хорошо добавить «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)
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.