Làm cách nào để nhập tệp csv vào python?

Các tệp CSV chứa văn bản thuần túy và là một định dạng nổi tiếng mà mọi người đều có thể đọc được, kể cả Pandas

Trong các ví dụ của chúng tôi, chúng tôi sẽ sử dụng tệp CSV có tên là 'data. csv'

Tải xuống dữ liệu. csv. hoặc Mở dữ liệu. csv

Ví dụ

Tải CSV vào DataFrame

nhập gấu trúc dưới dạng pd

df = pd. read_csv('dữ liệu. csv')

in (df. to_string())

Tự mình thử »

Mẹo. sử dụng to_string() để in toàn bộ Khung dữ liệu

Nếu bạn có một DataFrame lớn với nhiều hàng, Pandas sẽ chỉ trả về 5 hàng đầu tiên và 5 hàng cuối cùng

Ví dụ

In DataFrame mà không cần phương thức to_string()

nhập gấu trúc dưới dạng pd

df = pd. read_csv('dữ liệu. csv')

in (df)

Tự mình thử »


max_rows

Số lượng hàng được trả về được xác định trong cài đặt tùy chọn Pandas

Bạn có thể kiểm tra số hàng tối đa của hệ thống bằng câu lệnh pd.options.display.max_rows

Ví dụ

Kiểm tra số lượng hàng được trả về tối đa

nhập gấu trúc dưới dạng pd

in (pd. tùy chọn. trưng bày. max_rows)

Tự mình thử »

Trong hệ thống của tôi, số này là 60, có nghĩa là nếu DataFrame chứa hơn 60 hàng, thì câu lệnh print(df) sẽ chỉ trả về các tiêu đề và 5 hàng đầu tiên và cuối cùng

Đị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 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 chi tiết chính xác về đị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ọ

Trình tự đọc và ghi của mô-đun và đối tượng. Người lập trình 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 và

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 xác định các chức năng sau

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

Trả về một đối tượng trình đọc sẽ lặp qua các dòng trong csvfile đã cho. csvfile có thể là bất kỳ đối tượng nào hỗ trợ giao thức 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 — và các đối tượng danh sách đều phù hợp. Nếu csvfile là một đối tượng tệp, thì nó sẽ được mở bằng ___________2. 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 hoặc một trong các chuỗi được trả về bởi hàm. 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, xem phần

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', newline='') as csvfile:
..     spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
..     for row in spamreader:
..         print(', '.join(row))
Spam, Spam, Spam, Spam, Spam, Baked Beans
Spam, Lovely Spam, Wonderful Spam

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, thì nó sẽ được mở bằng ___________2. 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 hoặc một trong các chuỗi được trả về bởi hàm. 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. Để giao tiếp với các mô-đun triển khai API DB dễ dàng nhất có thể, giá trị được ghi dưới dạng chuỗi rỗ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('names.csv', 'w', newline='') as csvfile:
    fieldnames = ['first_name', 'last_name']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    writer.writeheader()
    writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})
    writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'})
    writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})
1. Tất cả dữ liệu không phải chuỗi khác được xâu chuỗi 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 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 chi tiết đầy đủ về phương ngữ và tham số định dạng, hãy xem phần

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ữ. An đượ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. An đượ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 giá trị bất biến

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 đị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 đối tượng 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. 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('names.csv', 'w', newline='') as csvfile:
    fieldnames = ['first_name', 'last_name']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    writer.writeheader()
    writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})
    writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'})
    writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})
0). 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('names.csv', 'w', newline='') as csvfile:
    fieldnames = ['first_name', 'last_name']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    writer.writeheader()
    writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})
    writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'})
    writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})
0)

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 cơ bản

Đã 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('students.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile, dialect='unix')
                                 ^^^^^^^^^^^^^^
2.

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

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 trong các 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('students.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile, dialect='unix')
                                 ^^^^^^^^^^^^^^
5 đượ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('students.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile, dialect='unix')
                                 ^^^^^^^^^^^^^^
5 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('students.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile, dialect='unix')
                                 ^^^^^^^^^^^^^^
7, giá trị mặc định, a sẽ tăng lên. Nếu nó được đặt thành
import csv

with open('students.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile, dialect='unix')
                                 ^^^^^^^^^^^^^^
9, 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 phiên bản cơ bản

Lưu ý rằng không giống như lớp, tham số tên trường của lớp không phải là tùy chọn

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

import csv

with open('names.csv', 'w', newline='') as csvfile:
    fieldnames = ['first_name', 'last_name']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    writer.writeheader()
    writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})
    writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'})
    writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})

lớp csv. Phương ngữ

Lớp này là một lớp chứa có các thuộc tính chứa thông tin về cách xử lý các 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. các trường hợp xác định cách thức và các trường hợp hoạt động

Tất cả các tên có sẵn được trả về bởi , và chúng có thể được đăng ký với các lớp và cụ thể thông qua các hàm khởi tạo (

import csv
with open('some.csv', newline='') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)
1) như thế này

import csv

with open('students.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile, dialect='unix')
                                 ^^^^^^^^^^^^^^

lớp csv. xuất sắc

Lớp 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('some.csv', newline='') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)
3

lớp csv. excel_tab

Lớp 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('some.csv', newline='') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)
5

lớp csv. unix_dialect

Lớp đị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('some.csv', newline='') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)
7 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('some.csv', newline='') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)
8

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

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

Lớp được sử dụng để suy ra định dạng của tệp CSV

Lớp 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 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ả lại nếu hàng đầu tiên có vẻ là một loạt các 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ụ để sử dụng

with open('example.csv', newline='') as csvfile:
    dialect = csv.Sniffer().sniff(csvfile.read(1024))
    csvfile.seek(0)
    reader = csv.reader(csvfile, dialect)
    # .. process CSV file contents here ...

Mô-đun xác định các hằng số sau

csv. QUOTE_ALL

Hướng dẫn các đối tượng trích dẫn tất cả các trường

csv. QUOTE_MINIMAL

Hướng dẫn các đối tượng 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 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 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 ký tự thoát không được đặt, người viết sẽ tăng nếu gặp bất kỳ ký tự nào yêu cầu thoát

Hướng dẫn thực hiện không xử lý đặc biệt các ký tự trích dẫn

Mô-đun 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 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('some.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerows(someiterable)
4 duy nhất. Khi tạo hoặc đối tượng, 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 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

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('some.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerows(someiterable)
9

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 , ký tự được nhân đôi. Khi , 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à

Ở đầu ra, nếu có doublequote và không có ký tự thoát nào được đặt, sẽ đượ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 và ký tự trích dẫn nếu trích dẫn kép là. 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à , 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ữ. bộ kết thúc dòng

Chuỗi được sử dụng để kết thúc các dòng được tạo bởi. Nó mặc định là

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

Ghi chú

Mã này đượ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('some.csv', newline='') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)
7 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ữ. ký tự 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 khi trích dẫn nên được tạo bởi người viết và được 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 ) và mặc định là

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

Khi , khoảng trắng ngay sau dấu phân cách bị bỏ qua. mặc định là

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

Khi

import csv
with open('passwd', newline='') as f:
    reader = csv.reader(f, delimiter=':', quoting=csv.QUOTE_NONE)
    for row in reader:
        print(row)
2, tăng ngoại lệ đối với đầu vào CSV không hợp lệ. Mặc định là
import csv
with open('some.csv', newline='', encoding='utf-8') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)
1

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

Các đối tượng đọc (các thể hiện và các đối tượng được hàm trả về) 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ừ ) hoặc lệnh (nếu là phiên bản), được phân tích cú pháp theo 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

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 đối tượng (các thể hiện và đối tượng được hàm trả về) 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ừ điển ánh xạ tên trường thành chuỗi hoặc số (bằng cách chuyển chúng qua trước) đối với đối tượng. 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 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 đượ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. bây giờ cũng trả về giá trị được trả về bởi phương thức 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('some.csv', newline='') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

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

import csv
with open('passwd', newline='') as f:
    reader = csv.reader(f, delimiter=':', quoting=csv.QUOTE_NONE)
    for row in reader:
        print(row)

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

import csv
with open('some.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerows(someiterable)

Vì được sử dụng để mở tệp CSV để đọc, nên 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 phần ). Để 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('some.csv', newline='', encoding='utf-8') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

Đ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

Đăng ký một phương ngữ mớ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'])
0

Cách sử dụng trình đọc nâng cao hơn một chút - phát hiện và báo cáo lỗ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'])
1

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

chú thích

1(,)

Nếu

>>> 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 không được chỉ định, các dòng mới được nhúng bên trong các trường được trích dẫn sẽ không được diễn giải chính xác và trên các nền tảng 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'])
31 lớp lót khi ghi thê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'])
32 sẽ được thêm vào. Sẽ luôn an toàn khi chỉ đị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'}
2, vì mô-đun csv tự xử lý () dòng mới

Bạn có thể mở tệp CSV bằng Python không?

Mọi ngôn ngữ hỗ trợ nhập tệp văn bản và thao tác chuỗi (như Python) đều có thể hoạt động trực tiếp với tệp CSV .

Cách chính xác để nhập mô-đun CSV bằng Python là gì?

Đọc CSV bằng mô-đun có sẵn của Python có tên là csv bằng cách sử dụng csv. .
Nhập thư viện csv. nhập csv
Mở tệp CSV. Các. .
Sử dụng tệp csv. đối tượng reader để đọc tệp CSV. csvreader = csv. người đọc (tập tin)
Trích xuất tên trường. Tạo một danh sách trống gọi là tiêu đề. .
Trích xuất các hàng/bản ghi. .
Đóng tệp