Đọc hàng và cột csv python

Định dạng được gọi là CSV (Giá trị được phân tách bằng dấu phẩy) là định dạng nhập và xuất phổ biến nhất cho bảng tính và cơ sở dữ liệu. Định dạng CSV đã được sử dụng trong nhiều năm trước khi cố gắng mô tả định dạng theo cách chuẩn hóa trong RFC 4180. Việc thiếu một tiêu chuẩn được xác định rõ ràng có nghĩa là những khác biệt tinh tế thường tồn tại trong dữ liệu được tạo ra và sử dụng bởi các ứng dụng khác nhau. Những khác biệt này có thể gây khó chịu khi xử lý tệp CSV từ nhiều nguồn. Tuy nhiên, trong khi các dấu phân cách và ký tự trích dẫn khác nhau, định dạng tổng thể tương tự nhau đủ để có thể viết một mô-đun duy nhất có thể thao tác dữ liệu đó một cách hiệu quả, ẩn các chi tiết đọc và ghi dữ liệu khỏi lập trình viên.

Mô-đun

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
3 triển khai các lớp để đọc và ghi dữ liệu dạng bảng ở định dạng CSV. Nó cho phép các lập trình viên nói, "ghi dữ liệu này ở định dạng ưa thích của Excel" hoặc "đọc dữ liệu từ tệp này được tạo bởi Excel" mà không cần biết các chi tiết chính xác của định dạng CSV được sử dụng bởi Excel. Các lập trình viên cũng có thể mô tả các định dạng CSV mà các ứng dụng khác hiểu được hoặc xác định các định dạng CSV có mục đích đặc biệt của riêng họ

Các đối tượng

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
6 và
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
7 của mô-đun
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
3 đọc và ghi các trình tự. Các lập trình viên cũng có thể đọc và ghi dữ liệu ở dạng từ điển bằng cách sử dụng các lớp
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
8 và
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
9

Xem thêm

PEP 305 - API tệp CSV

Đề xuất cải tiến Python đã đề xuất bổ sung này cho Python

Nội dung mô-đun¶

Mô-đun

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
3 xác định các chức năng sau

csv. trình đọc(csvfile , phương ngữ='excel', **fmtparams)

Trả về đối tượng trình đọc sẽ lặp qua các dòng trong tệp csv đã cho. csvfile có thể là bất kỳ đối tượng nào hỗ trợ giao thức iterator và trả về một chuỗi mỗi khi phương thức

>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
1 của nó được gọi — file . Nếu csvfile là một đối tượng tệp, nó sẽ được mở bằng
>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
2. 1 Có thể cung cấp một tham số phương ngữ tùy chọn được sử dụng để xác định một tập hợp các tham số dành riêng cho một phương ngữ CSV cụ thể. Nó có thể là một thể hiện của một lớp con của lớp
>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
3 hoặc một trong các chuỗi được trả về bởi hàm
>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
4. Các đối số từ khóa fmtparams tùy chọn khác có thể được cung cấp để ghi đè các tham số định dạng riêng lẻ trong phương ngữ hiện tại. Để biết chi tiết đầy đủ về phương ngữ và tham số định dạng, hãy xem phần
and list objects are both suitable. If csvfile is a file object, it should be opened with
>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
2. 1 An optional dialect parameter can be given which is used to define a set of parameters specific to a particular CSV dialect. It may be an instance of a subclass of the
>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
3 class or one of the strings returned by the
>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
4 function. The other optional fmtparams keyword arguments can be given to override individual formatting parameters in the current dialect. For full details about the dialect and formatting parameters, see section Phương ngữ và tham số định dạng .

Mỗi hàng được đọc từ tệp csv được trả về dưới dạng danh sách các chuỗi. Không có chuyển đổi loại dữ liệu tự động nào được thực hiện trừ khi tùy chọn định dạng

>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
5 được chỉ định (trong trường hợp đó, các trường không được trích dẫn sẽ được chuyển đổi thành số thực)

Một ví dụ sử dụng ngắn

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
2

csv. người viết(csvfile , phương ngữ='excel', **fmtparams)

Trả về một đối tượng nhà văn chịu trách nhiệm chuyển đổi dữ liệu của người dùng thành các chuỗi được phân tách trên đối tượng giống như tệp đã cho. csvfile có thể là bất kỳ đối tượng nào có phương thức

>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
6. Nếu csvfile là một đối tượng tệp, nó sẽ được mở bằng
>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
2 1. Có thể cung cấp một tham số phương ngữ tùy chọn được sử dụng để xác định một tập hợp các tham số dành riêng cho một phương ngữ CSV cụ thể. Nó có thể là một thể hiện của một lớp con của lớp
>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
3 hoặc một trong các chuỗi được trả về bởi hàm
>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
4. Các đối số từ khóa fmtparams tùy chọn khác có thể được cung cấp để ghi đè các tham số định dạng riêng lẻ trong phương ngữ hiện tại. Để biết chi tiết đầy đủ về phương ngữ và tham số định dạng, hãy xem phần Phương ngữ và tham số định dạng . Để giao tiếp với các mô-đun triển khai API DB dễ dàng nhất có thể, giá trị
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
70 được viết dưới dạng chuỗi trống. Mặc dù đây không phải là phép chuyển đổi có thể đảo ngược, nhưng nó giúp kết xuất giá trị dữ liệu SQL NULL sang tệp CSV dễ dàng hơn mà không cần xử lý trước dữ liệu được trả về từ lệnh gọi
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
71. Tất cả dữ liệu không phải chuỗi khác được xâu chuỗi bằng
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
72 trước khi được ghi.

Một ví dụ sử dụng ngắn

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])

csv. register_dialect(tên[ , dialect[, **fmtparams]])

Liên kết phương ngữ với tên. tên phải là một chuỗi. Phương ngữ có thể được chỉ định bằng cách chuyển một lớp con của

>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
3 hoặc bằng các đối số từ khóa fmtparams hoặc cả hai, với các đối số từ khóa ghi đè các tham số của phương ngữ. Để biết đầy đủ chi tiết về phương ngữ và tham số định dạng, hãy xem phần Phương ngữ và tham số định dạng .

csv. unregister_dialect(tên)

Xóa phương ngữ được liên kết với tên khỏi sổ đăng ký phương ngữ. Một

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
74 được nâng lên nếu tên không phải là tên phương ngữ đã đăng ký

csv. get_dialect(tên)

Trả lại phương ngữ được liên kết với tên. Một

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
74 được nâng lên nếu tên không phải là tên phương ngữ đã đăng ký. Hàm này trả về một
>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
3 không thay đổi

csv. list_dialects()

Trả lại tên của tất cả các phương ngữ đã đăng ký

csv. field_size_limit([new_limit])

Trả về kích thước trường tối đa hiện tại được trình phân tích cú pháp cho phép. Nếu new_limit được đưa ra, điều này sẽ trở thành giới hạn mới

Mô-đun

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
3 định nghĩa các lớp sau

lớp csv. DictReader(f , tên trường=None, restkey=None, restval=None, dialect='excel', *args, **kwds)

Tạo một đối tượng hoạt động như một trình đọc thông thường nhưng ánh xạ thông tin trong mỗi hàng tới một

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
78 có các khóa được cung cấp bởi tham số tên trường tùy chọn

Tham số tên trường là một trình tự . Nếu tên trường bị bỏ qua, các giá trị trong hàng đầu tiên của tệp f sẽ được sử dụng làm tên trường. Bất kể tên trường được xác định như thế nào, từ điển sẽ giữ nguyên thứ tự ban đầu của chúng.

Nếu một hàng có nhiều trường hơn tên trường, thì dữ liệu còn lại sẽ được đưa vào danh sách và được lưu trữ với tên trường được chỉ định bởi phím đặt lại (mặc định là

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
70). Nếu một hàng không trống có ít trường hơn tên trường, các giá trị còn thiếu sẽ được điền vào bằng giá trị của restval (giá trị này mặc định là
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
70)

Tất cả các đối số tùy chọn hoặc từ khóa khác được chuyển đến phiên bản

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
6 bên dưới

Đã thay đổi trong phiên bản 3. 6. Các hàng được trả về hiện thuộc loại

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
02.

Đã thay đổi trong phiên bản 3. 8. Các hàng được trả về hiện thuộc loại

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
78.

Một ví dụ sử dụng ngắn

>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}

lớp csv. DictWriter(f , tên trường, restval='', extrasaction='raise', dialect='excel', *args, **kwds)

Tạo một đối tượng hoạt động giống như một trình ghi thông thường nhưng ánh xạ từ điển lên các hàng đầu ra. Tham số tên trường là một

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
04 khóa xác định thứ tự các giá trị trong từ điển được truyền cho phương thức
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
05 được ghi vào tệp f. Tham số restval tùy chọn chỉ định giá trị sẽ được ghi nếu từ điển thiếu khóa trong tên trường. Nếu từ điển được chuyển đến phương thức
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
05 chứa khóa không tìm thấy trong tên trường, tham số bổ sung tùy chọn cho biết hành động cần thực hiện. Nếu nó được đặt thành
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
07, giá trị mặc định, một
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
08 sẽ được nâng lên. Nếu nó được đặt thành
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
09, các giá trị bổ sung trong từ điển sẽ bị bỏ qua. Bất kỳ đối số tùy chọn hoặc từ khóa nào khác được chuyển đến đối tượng
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
7 bên dưới

Lưu ý rằng không giống như lớp

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
8, tham số tên trường của lớp
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
9 không phải là tùy chọn

Một ví dụ sử dụng ngắn

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
7

lớp csv. Phương ngữ

Lớp

>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
3 là lớp chứa có thuộc tính chứa thông tin về cách xử lý dấu ngoặc kép, khoảng trắng, dấu phân cách, v.v. Do thiếu thông số kỹ thuật CSV nghiêm ngặt, các ứng dụng khác nhau tạo ra dữ liệu CSV khác nhau một cách tinh vi. Phiên bản
>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
3 xác định cách hoạt động của phiên bản
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
6 và
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
7

Tất cả các tên

>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
3 có sẵn được trả về bởi
>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
4 và chúng có thể được đăng ký với các lớp
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
6 và
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
7 cụ thể thông qua các hàm khởi tạo (
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
11) của chúng như thế này

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
0

lớp csv. excel

Lớp

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
12 xác định các thuộc tính thông thường của tệp CSV do Excel tạo. Nó được đăng ký với tên phương ngữ
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
13

lớp csv. excel_tab

Lớp

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
14 xác định các thuộc tính thông thường của tệp được phân định bằng TAB do Excel tạo. Nó được đăng ký với tên phương ngữ
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
15

lớp csv. unix_dialect

Lớp

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
16 định nghĩa các thuộc tính thông thường của tệp CSV được tạo trên hệ thống UNIX, tôi. e. sử dụng
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
17 làm dấu kết thúc dòng và trích dẫn tất cả các trường. Nó được đăng ký với tên phương ngữ
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
18

Mới trong phiên bản 3. 2

lớp csv. Người đánh hơi

Lớp

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
19 được sử dụng để suy ra định dạng của tệp CSV

Lớp

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
19 cung cấp hai phương thức

sniff(mẫu , dấu phân cách=None)

Phân tích mẫu đã cho và trả về một phân lớp

>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
3 phản ánh các tham số được tìm thấy. Nếu tham số dấu phân cách tùy chọn được đưa ra, nó được hiểu là một chuỗi chứa các ký tự dấu phân cách hợp lệ có thể có

has_header(mẫu)

Phân tích văn bản mẫu (được cho là ở định dạng CSV) và trả về

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
32 nếu hàng đầu tiên có vẻ là một loạt tiêu đề cột. Kiểm tra từng cột, một trong hai tiêu chí chính sẽ được xem xét để ước tính xem mẫu có chứa tiêu đề hay không

  • hàng thứ hai đến hàng thứ n chứa các giá trị số

  • hàng thứ hai đến hàng thứ n chứa các chuỗi trong đó độ dài của ít nhất một giá trị khác với độ dài của tiêu đề giả định của cột đó

Hai mươi hàng sau hàng đầu tiên được lấy mẫu;

Ghi chú

Phương pháp này là một heuristic thô và có thể tạo ra cả dương tính giả và âm tính

Một ví dụ cho việc sử dụng

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
19

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
6

Mô-đun

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
3 xác định các hằng số sau

csv. QUOTE_ALL

Hướng dẫn đối tượng

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
7 trích dẫn tất cả các trường

csv. QUOTE_MINIMAL

Hướng dẫn các đối tượng

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
7 chỉ trích dẫn những trường có chứa các ký tự đặc biệt như dấu phân cách, ký tự trích dẫn hoặc bất kỳ ký tự nào trong lineterminator

csv. QUOTE_NONNUMERIC

Hướng dẫn các đối tượng

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
7 trích dẫn tất cả các trường không phải là số

Hướng dẫn người đọc chuyển đổi tất cả các trường không được trích dẫn để nhập float

csv. QUOTE_NONE

Hướng dẫn các đối tượng

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
7 không bao giờ trích dẫn các trường. Khi dấu phân cách hiện tại xuất hiện trong dữ liệu đầu ra, nó được bắt đầu bằng ký tự thoát hiện tại. Nếu không đặt ký tự thoát, người viết sẽ tăng
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
74 nếu gặp phải bất kỳ ký tự nào yêu cầu thoát

Hướng dẫn

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
6 không thực hiện xử lý đặc biệt các ký tự trích dẫn

Mô-đun

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
3 xác định ngoại lệ sau

ngoại lệ csv. Lỗi

Tăng lên bởi bất kỳ chức năng nào khi phát hiện lỗi

Phương ngữ và tham số định dạng¶

Để dễ dàng chỉ định định dạng của bản ghi đầu vào và đầu ra, các tham số định dạng cụ thể được nhóm lại với nhau thành các phương ngữ. Một phương ngữ là một lớp con của lớp

>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
3 có một tập hợp các phương thức cụ thể và một phương thức
>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
64 duy nhất. Khi tạo các đối tượng
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
6 hoặc
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
7, lập trình viên có thể chỉ định một chuỗi hoặc một lớp con của lớp
>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
3 làm tham số phương ngữ. Ngoài, hoặc thay cho tham số phương ngữ, lập trình viên cũng có thể chỉ định các tham số định dạng riêng lẻ, có cùng tên với các thuộc tính được xác định bên dưới cho lớp
>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
3

Các phương ngữ hỗ trợ các thuộc tính sau

Phương ngữ. dấu phân cách

Chuỗi một ký tự được sử dụng để phân tách các trường. Nó mặc định là

>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
69

Phương ngữ. trích dẫn kép

Kiểm soát cách các phiên bản của quotechar xuất hiện bên trong một trường sẽ được trích dẫn. Khi

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
32, ký tự được nhân đôi. Khi
>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
31, ký tự thoát được sử dụng làm tiền tố cho ký tự trích dẫn. Nó mặc định là
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
32

Ở đầu ra, nếu doublequote là

>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
31 và không có ký tự thoát nào được đặt, thì
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
74 được nâng lên nếu tìm thấy ký tự trích dẫn trong một trường

Phương ngữ. ký tự thoát

Chuỗi một ký tự được người viết sử dụng để thoát khỏi dấu phân cách nếu trích dẫn được đặt thành

>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
35 và ký tự trích dẫn nếu trích dẫn kép là
>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
31. Khi đọc, ký tự thoát sẽ xóa mọi ý nghĩa đặc biệt khỏi ký tự sau. Nó mặc định là
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
70, vô hiệu hóa việc thoát

Đã thay đổi trong phiên bản 3. 11. Không được phép sử dụng ký tự thoát rỗng.

Phương ngữ. lineterminator

Chuỗi được sử dụng để kết thúc các dòng được tạo bởi

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
7. Nó mặc định là
>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
39

Ghi chú

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
6 được mã hóa cứng để nhận ra
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
01 hoặc
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
17 là cuối dòng và bỏ qua bộ kết thúc dòng. Hành vi này có thể thay đổi trong tương lai

Phương ngữ. báo giá

Chuỗi một ký tự được sử dụng để trích dẫn các trường chứa ký tự đặc biệt, chẳng hạn như dấu phân cách hoặc ký tự trích dẫn hoặc chứa ký tự xuống dòng. Nó mặc định là

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
03

Đã thay đổi trong phiên bản 3. 11. Không được phép sử dụng ký tự trích dẫn trống.

Phương ngữ. trích dẫn

Kiểm soát thời điểm người viết tạo trích dẫn và người đọc nhận ra. Nó có thể nhận bất kỳ hằng số

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
04 nào (xem phần Nội dung mô-đun ) và mặc định là
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
05.

Phương ngữ. bỏ qua dấu cách

Khi

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
32, khoảng trắng ngay sau dấu phân cách sẽ bị bỏ qua. Mặc định là
>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
31

Phương ngữ. nghiêm ngặt

Khi

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
32, tăng ngoại lệ
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
74 đối với đầu vào CSV không hợp lệ. Mặc định là
>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
31

Đối tượng người đọc¶

Đối tượng reader (_______08 thể hiện và đối tượng được trả về bởi hàm

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
12) có các phương thức công khai sau

csvreader. __next__()

Trả về hàng tiếp theo của đối tượng có thể lặp lại của trình đọc dưới dạng danh sách (nếu đối tượng được trả về từ

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
12) hoặc lệnh (nếu đó là phiên bản
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
8), được phân tích cú pháp theo
>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
3 hiện tại. Thông thường bạn nên gọi đây là
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
16

Đối tượng người đọc có các thuộc tính công khai sau

csvreader. phương ngữ

Mô tả chỉ đọc của phương ngữ được trình phân tích cú pháp sử dụng

csvreader. line_num

Số dòng được đọc từ trình lặp nguồn. Điều này không giống với số lượng bản ghi được trả về, vì bản ghi có thể trải rộng trên nhiều dòng

Các đối tượng DictReader có thuộc tính public sau

csvreader. tên trường

Nếu không được truyền dưới dạng tham số khi tạo đối tượng, thì thuộc tính này được khởi tạo khi truy cập lần đầu hoặc khi bản ghi đầu tiên được đọc từ tệp

Đối tượng nhà văn¶

Đối tượng

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
17 (_______09 thể hiện và đối tượng được trả về bởi hàm
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
19) có các phương thức công khai sau. Một hàng phải là một chuỗi hoặc số có thể lặp lại đối với đối tượng
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
17 và tên trường ánh xạ từ điển thành chuỗi hoặc số (bằng cách chuyển chúng qua
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
72 trước) đối với đối tượng
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
9. Lưu ý rằng các số phức được viết ra bao quanh bởi dấu ngoặc đơn. Điều này có thể gây ra một số sự cố đối với các chương trình khác đọc tệp CSV (giả sử chúng hoàn toàn hỗ trợ các số phức)

csvwriter. nhà văn(hàng)

Viết tham số hàng vào đối tượng tệp của người viết, được định dạng theo

>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
3 hiện tại. Trả lại giá trị trả về của lệnh gọi phương thức ghi của đối tượng tệp bên dưới

Đã thay đổi trong phiên bản 3. 5. Đã thêm hỗ trợ cho các lần lặp tùy ý.

csvwriter. hàng viết(hàng)

Ghi tất cả các thành phần trong hàng (một đối tượng hàng có thể lặp lại như được mô tả ở trên) vào đối tượng tệp của người viết, được định dạng theo phương ngữ hiện tại

Các đối tượng nhà văn có thuộc tính công khai sau

csvwriter. phương ngữ

Một mô tả chỉ đọc về phương ngữ được sử dụng bởi nhà văn

Các đối tượng DictWriter có phương thức công khai sau

DictWriter. tiêu đề ghi()

Viết một hàng có tên trường (như được chỉ định trong hàm tạo) vào đối tượng tệp của người viết, được định dạng theo phương ngữ hiện tại. Trả về giá trị trả về của cuộc gọi

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
24 được sử dụng nội bộ

Mới trong phiên bản 3. 2

Đã thay đổi trong phiên bản 3. 8. ______025 bây giờ cũng trả về giá trị được trả về bởi phương thức

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
24 mà nó sử dụng nội bộ.

Ví dụ¶

Ví dụ đơn giản nhất về đọc tệp CSV

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
1

Đọc một tệp có định dạng thay thế

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
3

Ví dụ viết đơn giản nhất có thể tương ứng là

>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
6

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
27 được sử dụng để mở tệp CSV để đọc, theo mặc định, tệp sẽ được giải mã thành unicode bằng cách sử dụng mã hóa mặc định của hệ thống (xem
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
28). Để giải mã tệp bằng mã hóa khác, hãy sử dụng đối số
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
29 của open

>>> import csv
>>> with open('names.csv', newline='') as csvfile:
..     reader = csv.DictReader(csvfile)
..     for row in reader:
..         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}
3

Điều tương tự cũng áp dụng cho việc viết bằng thứ gì đó không phải là mã hóa mặc định của hệ thống. chỉ định đối số mã hóa khi mở tệp đầu ra

Cách đọc các hàng và cột cụ thể CSV Python?

Bước 1. Để đọc các hàng trong Python, trước tiên, chúng ta cần tải tệp CSV trong một đối tượng. Vì vậy, để tải tệp csv vào một đối tượng, hãy sử dụng phương thức open(). Bước 2. Tạo đối tượng trình đọc bằng cách chuyển đối tượng tệp đã tạo ở trên cho hàm trình đọc. Bước 3. Sử dụng vòng lặp for trên đối tượng đầu đọc để lấy từng hàng

Làm cách nào tôi có thể đọc một cột cụ thể của một hàng cụ thể của tệp CSV bằng Python?

Sử dụng gấu trúc. read_csv() để đọc một cột cụ thể từ tệp CSV . Để đọc tệp CSV, hãy gọi pd. read_csv(file_name, usecols=cols_list) với file_name là tên của tệp CSV, dấu phân cách là dấu phân cách và cols_list là danh sách các cột cụ thể để đọc từ tệp CSV.

Hàng và cột trong CSV là gì?

Mỗi hàng trong tệp CSV đại diện cho một tập hợp các giá trị được phân tách bằng dấu phân cách cụ thể . Tất cả các hàng đều đồng nhất, nghĩa là mỗi hàng có cùng số lượng giá trị. Các giá trị từ tất cả các hàng có cùng chỉ mục tạo một cột. Các giá trị trong một cột đại diện cho cùng một loại dữ liệu.

Phương pháp nào được sử dụng để đọc một hàng trong tệp CSV Python?

Việc đọc từ tệp CSV được thực hiện bằng cách sử dụng đối tượng trình đọc . Tệp CSV được mở dưới dạng tệp văn bản với hàm open() tích hợp sẵn của Python, hàm này trả về một đối tượng tệp.