Làm cách nào để đọc một dòng dữ liệu csv trong Python?


90

Có rất nhiều ví dụ về việc đọc dữ liệu csv bằng python, như ví dụ sau:

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

Tôi chỉ muốn đọc một dòng dữ liệu và nhập nó vào các biến khác nhau. Làm thế nào để làm điều đó? Tôi đã tìm khắp nơi để tìm một ví dụ làm việc.

Mã của tôi chỉ truy xuất giá trị cho tôi và không truy xuất giá trị nào khác

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

cấu trúc của csv của bạn là gì? Điều gì là rowkhi bạn đang lặp lại qua trình đọc?
dm03514

Câu trả lời:


142

Để chỉ đọc hàng đầu tiên của tệp csv, hãy sử dụng next()trên đối tượng trình đọc.

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)

hoặc là :

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

38

bạn chỉ có thể nhận được hàng đầu tiên như:

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

2
Có thể, tốt hơn là bạn nên thêm "with open ('csv_file', 'r')" là f: csv_reader = csv.reader (f) ... "
Sanchit

23

Bạn có thể sử dụng thư viện Pandas để đọc vài dòng đầu tiên từ tập dữ liệu khổng lồ.

import pandas as pd

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

Bạn có thể đề cập đến số dòng được đọc trong tham số nrows.


13

Từ tài liệu Python :

Và mặc dù mô-đun không hỗ trợ trực tiếp phân tích chuỗi, nhưng nó có thể dễ dàng thực hiện:

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

Chỉ cần thả dữ liệu chuỗi của bạn vào một danh sách đơn.


8

Cách đơn giản để lấy bất kỳ hàng nào trong tệp csv

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

3
Để làm công việc này trong python3, chỉ cần loại bỏ các 'b' trong 'rb'
Ricky Avina

1
Điều này chỉ hoạt động, thực sự mà không có delimiter='.'.
suvtfopw

1
Để trả lời câu hỏi về áp phích, chỉ cần thêm dấu breaksau dấu csvFileArray.append(row)và nó sẽ chỉ đọc dòng đầu tiên.
StratusBase LLC

4

Chỉ để tham khảo, một forvòng lặp có thể được sử dụng sau khi nhận được hàng đầu tiên để lấy phần còn lại của tệp:

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

Để in một dải dòng, trong trường hợp này là từ dòng 4 đến dòng 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)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.