Python tạo tập tin phân cách bằng đường ống

[Nhà tài trợ] Bắt đầu học Python với hướng dẫn Giới thiệu về Python miễn phí của DataCamp. Tìm hiểu Khoa học dữ liệu bằng cách hoàn thành các thử thách mã hóa tương tác và xem video của các chuyên gia hướng dẫn. Bắt đầu bây giờ

Cập nhật ngày 07 tháng 1 năm 2020

Tệp CSV là gì?

CSV [Các giá trị được phân tách bằng dấu phẩy] là định dạng trao đổi dữ liệu phổ biến được các ứng dụng sử dụng để tạo và sử dụng dữ liệu. Một số định dạng trao đổi dữ liệu nổi tiếng khác là XML, HTML, JSON, v.v.

Tệp CSV là một tệp văn bản đơn giản trong đó mỗi dòng chứa danh sách các giá trị [hoặc trường] được phân tách bằng dấu phẩy

Mặc dù thuật ngữ "Dấu phẩy" xuất hiện trong chính tên định dạng, nhưng bạn sẽ gặp các tệp CSV trong đó dữ liệu được phân tách bằng tab [_______07] hoặc dấu gạch ngang [

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
8] hoặc bất kỳ ký tự nào khác có thể được sử dụng làm dấu phân cách

Dòng đầu tiên của tệp CSV đại diện cho tiêu đề chứa danh sách tên cột trong tệp. Tiêu đề là tùy chọn nhưng rất khuyến khích

Tệp CSV thường được sử dụng để biểu thị dữ liệu dạng bảng. Ví dụ, hãy xem xét bảng sau

IDTênQuốc giaMãQuậnDân số1KabulAFGKabol17800002QandaharAFGQandahar2375003HeratAFGHerat1868004Mazar-e-SharifAFGBalkh1278005AmsterdamNLDNoord-Holland731200

Bảng trên có thể được biểu diễn bằng định dạng CSV như sau

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"

Nếu các giá trị trong tệp CSV của bạn chứa dấu phẩy, thì giá trị đó phải được đặt trong dấu ngoặc kép. Ví dụ

TênTuổiĐịa chỉJerry102776 McDowell Street, Nashville, TennesseeTom203171 Jessie Street, Westerville, OhioMike301818 Sherman Street, Hope, Kansas

Để giữ lại dấu phẩy bên trong trường Địa chỉ, hãy đặt nó trong dấu ngoặc kép, như sau

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"

Tương tự, nếu bạn có dấu ngoặc kép được nhúng bên trong một trường, trường đó phải được thoát bằng một ký tự dấu ngoặc kép khác. Nếu không, họ sẽ không được giải thích một cách chính xác. Ví dụ

IdUserComment1BobJohn đã nói "Xin chào thế giới"2Tom"Nhà ảo thuật"

Để giữ nguyên dấu ngoặc kép bên trong trường Nhận xét, hãy sử dụng hai dấu ngoặc kép

Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""

Điều quan trọng cần lưu ý là định dạng CSV không được chuẩn hóa hoàn toàn. Vì vậy, các quy tắc chúng tôi vừa đề cập là không phổ biến. Thỉnh thoảng, bạn sẽ gặp các tệp CSV có cách thể hiện các trường khác nhau

May mắn thay, để giúp mọi việc dễ dàng hơn với chúng ta, Python cung cấp mô-đun

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
9

Trước khi chúng tôi bắt đầu đọc và ghi tệp CSV, bạn nên hiểu rõ về cách làm việc với tệp nói chung. Nếu bạn cần xem lại, hãy cân nhắc đọc cách đọc và ghi tệp bằng Python

Mô-đun

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
9 được sử dụng để đọc và ghi tệp. Nó chủ yếu cung cấp các lớp và chức năng sau

  1. import csv
    
    with open['employees.csv', 'rt'] as f:
        csv_reader = csv.reader[f]
    
        next[csv_reader] # skip the heading
    
        for line in csv_reader:
            print[line[0], line[1], line[2]]
    
    1
  2. import csv
    
    with open['employees.csv', 'rt'] as f:
        csv_reader = csv.reader[f]
    
        next[csv_reader] # skip the heading
    
        for line in csv_reader:
            print[line[0], line[1], line[2]]
    
    2
  3. import csv
    
    with open['employees.csv', 'rt'] as f:
        csv_reader = csv.reader[f]
    
        next[csv_reader] # skip the heading
    
        for line in csv_reader:
            print[line[0], line[1], line[2]]
    
    3
  4. import csv
    
    with open['employees.csv', 'rt'] as f:
        csv_reader = csv.reader[f]
    
        next[csv_reader] # skip the heading
    
        for line in csv_reader:
            print[line[0], line[1], line[2]]
    
    4

Hãy bắt đầu với hàm

import csv

with open['employees.csv', 'rt'] as f:
    csv_reader = csv.reader[f]

    next[csv_reader] # skip the heading

    for line in csv_reader:
        print[line[0], line[1], line[2]]
1

Đọc tệp CSV bằng trình đọc[]

Hàm

import csv

with open['employees.csv', 'rt'] as f:
    csv_reader = csv.reader[f]

    next[csv_reader] # skip the heading

    for line in csv_reader:
        print[line[0], line[1], line[2]]
1 lấy một đối tượng tệp và trả về một đối tượng
import csv

with open['employees.csv', 'rt'] as f:
    csv_reader = csv.reader[f]

    next[csv_reader] # skip the heading

    for line in csv_reader:
        print[line[0], line[1], line[2]]
7 có thể được sử dụng để lặp lại nội dung của tệp CSV. Cú pháp của hàm
import csv

with open['employees.csv', 'rt'] as f:
    csv_reader = csv.reader[f]

    next[csv_reader] # skip the heading

    for line in csv_reader:
        print[line[0], line[1], line[2]]
1 như sau

cú pháp. reader[fileobj [, method='excel' [, **fmtparam] ]] ->  _csv. người đọc

Đối sốMô tả

import csv

with open['employees.csv', 'rt'] as f:
    csv_reader = csv.reader[f]

    next[csv_reader] # skip the heading

    for line in csv_reader:
        print[line[0], line[1], line[2]]
9[bắt buộc] Nó đề cập đến đối tượng tệp
id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
60[tùy chọn] Phương ngữ đề cập đến các cách khác nhau để định dạng tài liệu CSV. Theo mặc định, mô-đun
id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
9 sử dụng định dạng giống như Microsoft Excel. Chúng tôi sẽ thảo luận chi tiết về phương ngữ sau trong bài viết này.
id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
62[tùy chọn] Nó đề cập đến tập hợp các đối số từ khóa để tùy chỉnh phương ngữ [xem phần tiếp theo]

Giả sử chúng ta có tệp CSV sau

người lao động. csv

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
9

Đây là cách đọc tệp CSV này

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
0

Sản lượng dự kiến

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
1

Lưu ý rằng mỗi dòng trong tệp CSV được trả về dưới dạng danh sách các chuỗi

Để lấy dữ liệu từ các trường nhất định, bạn có thể sử dụng lập chỉ mục. Ví dụ

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
2

Sản lượng dự kiến

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com

Nếu bạn muốn bỏ qua tiêu đề, hãy gọi hàm tích hợp

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
63 trên đối tượng
import csv

with open['employees.csv', 'rt'] as f:
    csv_reader = csv.reader[f]

    next[csv_reader] # skip the heading

    for line in csv_reader:
        print[line[0], line[1], line[2]]
7 và sau đó lặp qua các dòng còn lại như bình thường

import csv

with open['employees.csv', 'rt'] as f:
    csv_reader = csv.reader[f]

    next[csv_reader] # skip the heading

    for line in csv_reader:
        print[line[0], line[1], line[2]]

Sản lượng dự kiến

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
6

Tùy chỉnh trình đọc[]

Theo mặc định, mô-đun

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
9 hoạt động theo định dạng được sử dụng bởi Microsoft excel, nhưng bạn cũng có thể xác định định dạng của riêng mình bằng cách sử dụng thứ gọi là Phương ngữ

Sau đây là một số đối số bổ sung mà bạn có thể chuyển đến hàm

import csv

with open['employees.csv', 'rt'] as f:
    csv_reader = csv.reader[f]

    next[csv_reader] # skip the heading

    for line in csv_reader:
        print[line[0], line[1], line[2]]
1 để tùy chỉnh hoạt động của nó

  • id name email
    1 John john@mail.com
    2 Bob bob@mail.com
    3 Mary mary@mail.com
    
    67 - Nó đề cập đến ký tự được sử dụng để phân tách các giá trị [hoặc trường] trong tệp CSV. Nó mặc định là dấu phẩy [
    id name email
    1 John john@mail.com
    2 Bob bob@mail.com
    3 Mary mary@mail.com
    
    68]
  • id name email
    1 John john@mail.com
    2 Bob bob@mail.com
    3 Mary mary@mail.com
    
    69  - Nó kiểm soát cách diễn giải khoảng trắng sau dấu phân cách. Nếu True , khoảng trắng ban đầu sẽ bị xóa. Nó mặc định là
    Name,Age,Address
    Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
    Tom,20,"3171 Jessie Street, Westerville, Ohio"
    Mike,30,"1818 Sherman Street, Hope, Kansas"
    
    00
  • Name,Age,Address
    Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
    Tom,20,"3171 Jessie Street, Westerville, Ohio"
    Mike,30,"1818 Sherman Street, Hope, Kansas"
    
    01 - Nó đề cập đến chuỗi ký tự được sử dụng để kết thúc dòng. Nó mặc định là
    Name,Age,Address
    Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
    Tom,20,"3171 Jessie Street, Westerville, Ohio"
    Mike,30,"1818 Sherman Street, Hope, Kansas"
    
    02
  • Name,Age,Address
    Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
    Tom,20,"3171 Jessie Street, Westerville, Ohio"
    Mike,30,"1818 Sherman Street, Hope, Kansas"
    
    03 - Nó đề cập đến chuỗi ký tự đơn sẽ được sử dụng để báo giá trị nếu các ký tự đặc biệt [như dấu phân cách] xuất hiện bên trong trường. Nó mặc định là
    Name,Age,Address
    Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
    Tom,20,"3171 Jessie Street, Westerville, Ohio"
    Mike,30,"1818 Sherman Street, Hope, Kansas"
    
    04
  • Name,Age,Address
    Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
    Tom,20,"3171 Jessie Street, Westerville, Ohio"
    Mike,30,"1818 Sherman Street, Hope, Kansas"
    
    05  - kiểm soát thời điểm trích dẫn nên được tạo bởi người viết hoặc được người đọc nhận ra. Nó có thể lấy một trong các hằng số sau
    • Name,Age,Address
      Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
      Tom,20,"3171 Jessie Street, Westerville, Ohio"
      Mike,30,"1818 Sherman Street, Hope, Kansas"
      
      06 có nghĩa là chỉ thêm trích dẫn khi được yêu cầu, ví dụ: khi một trường chứa ký tự trích dẫn hoặc dấu phân cách. Đây là mặc định
    • Name,Age,Address
      Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
      Tom,20,"3171 Jessie Street, Westerville, Ohio"
      Mike,30,"1818 Sherman Street, Hope, Kansas"
      
      07 có nghĩa là trích dẫn mọi thứ bất kể loại trường
    • Name,Age,Address
      Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
      Tom,20,"3171 Jessie Street, Westerville, Ohio"
      Mike,30,"1818 Sherman Street, Hope, Kansas"
      
      08 có nghĩa là trích dẫn mọi thứ trừ số nguyên và số thực
    • Name,Age,Address
      Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
      Tom,20,"3171 Jessie Street, Westerville, Ohio"
      Mike,30,"1818 Sherman Street, Hope, Kansas"
      
      09 có nghĩa là không trích dẫn bất cứ điều gì trên đầu ra. Tuy nhiên, trong khi trích dẫn đọc được bao gồm xung quanh các giá trị trường
  • Name,Age,Address
    Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
    Tom,20,"3171 Jessie Street, Westerville, Ohio"
    Mike,30,"1818 Sherman Street, Hope, Kansas"
    
    10 - Nó đề cập đến chuỗi một ký tự được sử dụng để thoát khỏi dấu phân cách khi trích dẫn được đặt thành
    Name,Age,Address
    Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
    Tom,20,"3171 Jessie Street, Westerville, Ohio"
    Mike,30,"1818 Sherman Street, Hope, Kansas"
    
    11. Nó mặc định là
    Name,Age,Address
    Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
    Tom,20,"3171 Jessie Street, Westerville, Ohio"
    Mike,30,"1818 Sherman Street, Hope, Kansas"
    
    12
  • Name,Age,Address
    Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
    Tom,20,"3171 Jessie Street, Westerville, Ohio"
    Mike,30,"1818 Sherman Street, Hope, Kansas"
    
    13  - kiểm soát việc xử lý dấu ngoặc kép bên trong các trường. Khi
    Name,Age,Address
    Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
    Tom,20,"3171 Jessie Street, Westerville, Ohio"
    Mike,30,"1818 Sherman Street, Hope, Kansas"
    
    14, hai trích dẫn liên tiếp được hiểu là một trong khi đọc và khi ghi, mỗi ký tự trích dẫn được nhúng trong dữ liệu được ghi dưới dạng hai trích dẫn. Hãy xem qua một số ví dụ để hiểu rõ hơn về cách thức hoạt động của các đối số này

đối số dấu phân cách

nhân viên_pipe. csv

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
0

Tệp này sử dụng ký tự ống [

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
8] làm dấu phân cách. Đây là cách đọc tệp CSV này

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
1

Sản lượng dự kiến

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
1

đối số skipinitialspace

Người chơi bóng chày. csv

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
3

Tệp CSV này chứa khoảng trắng sau dấu phẩy [

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
68]. Để đọc chính xác tệp CSV này, hãy đặt
id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
69 thành
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
14, như sau

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
4

Sản lượng dự kiến

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
5

đối số quotechar

địa chỉ. csv

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
6

Có hai điều cần lưu ý trong tập tin này. Đầu tiên, trường địa chỉ được bao bọc bằng cách sử dụng dấu nháy đơn [

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
19] thay vì dấu nháy kép
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
04 [là giá trị mặc định]. Thứ hai, có khoảng trắng sau dấu phẩy [
id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
68]

Nếu bạn cố gắng đọc tệp này mà không thay đổi ký tự trích dẫn, bạn sẽ nhận được đầu ra như sau

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
7

Sản lượng dự kiến

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
8

Lưu ý rằng địa chỉ được chia thành ba trường, điều này chắc chắn là không chính xác. Để khắc phục sự cố, chỉ cần thay đổi ký tự trích dẫn thành một trích dẫn [

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
19] bằng cách sử dụng đối số
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
03

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
9

Sản lượng dự kiến

Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
0

đối số escapechar

bình luận. csv

Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
1

Tệp này sử dụng ký tự dấu gạch chéo ngược [

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
24] để thoát khỏi dấu ngoặc kép được nhúng. Tuy nhiên, theo mặc định, mô-đun
id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
9 mặc định sử dụng ký tự trích dẫn kép để thoát khỏi ký tự trích dẫn kép

Nếu cố đọc tệp này bằng các tùy chọn mặc định, bạn sẽ nhận được đầu ra như thế này

Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
2

Sản lượng dự kiến

Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
3

Đầu ra này chắc chắn là không mong muốn. Để có đầu ra chính xác, hãy thay đổi ký tự thoát bằng cách sử dụng đối số

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
10, như sau

Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
4

Sản lượng dự kiến

Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
5

trích dẫn kép đối số

đối thoại. csv

Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
6

Tệp này sử dụng dấu ngoặc kép để thoát khỏi các ký tự dấu ngoặc kép được nhúng trong trường. Theo mặc định,

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
13 được đặt thành
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
14. Kết quả là, trong khi đọc hai dấu ngoặc kép liên tiếp được hiểu là một

Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
7

Sản lượng dự kiến

Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
8

Tuy nhiên, nếu bạn đặt

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
13 thành
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
00, các dấu ngoặc kép liên tiếp sẽ xuất hiện ở đầu ra

Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
9

Sản lượng dự kiến

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
90

Viết tệp CSV bằng trình ghi []

Để ghi dữ liệu vào tệp CSV, chúng tôi sử dụng chức năng

import csv

with open['employees.csv', 'rt'] as f:
    csv_reader = csv.reader[f]

    next[csv_reader] # skip the heading

    for line in csv_reader:
        print[line[0], line[1], line[2]]
2. Nó chấp nhận cùng một đối số như hàm
import csv

with open['employees.csv', 'rt'] as f:
    csv_reader = csv.reader[f]

    next[csv_reader] # skip the heading

    for line in csv_reader:
        print[line[0], line[1], line[2]]
1 nhưng trả về một đối tượng người viết [i. e
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
33]

cú pháp.

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
34

Đối sốMô tả

import csv

with open['employees.csv', 'rt'] as f:
    csv_reader = csv.reader[f]

    next[csv_reader] # skip the heading

    for line in csv_reader:
        print[line[0], line[1], line[2]]
9[bắt buộc] Nó đề cập đến đối tượng tệp
id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
60[tùy chọn] Phương ngữ đề cập đến các cách khác nhau để định dạng tài liệu CSV. Theo mặc định, mô-đun
id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
9 sử dụng định dạng giống như Microsoft Excel. Chúng tôi sẽ thảo luận chi tiết về phương ngữ sau trong bài viết này.
id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
62[tùy chọn] Tham số định dạng, hoạt động giống như chức năng của
import csv

with open['employees.csv', 'rt'] as f:
    csv_reader = csv.reader[f]

    next[csv_reader] # skip the heading

    for line in csv_reader:
        print[line[0], line[1], line[2]]
1

Ví dụ nhà văn cung cấp hai phương thức sau để ghi dữ liệu

MethodDescription

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
40Viết một hàng dữ liệu và trả về số ký tự đã viết.
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
41 phải là một chuỗi các chuỗi và số.
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
42Ghi nhiều hàng dữ liệu và trả về
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
12.
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
44 phải là một dãy

Dưới đây là các ví dụ

ví dụ 1. Sử dụng

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
45

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
91

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
92

ví dụ 2. Sử dụng

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
46

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
93

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
94

Đầu ra được tạo bởi cả hai danh sách sẽ giống nhau và có vẻ như thế này

khách hàng. csv

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
95

Lưu ý rằng chỉ có trường địa chỉ được bao quanh dấu ngoặc kép. Điều này là do theo mặc định, đối số

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
05 được đặt thành
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
48. Nói cách khác, các trường sẽ chỉ được trích dẫn khi ký tự quote hoặc dấu phân cách xuất hiện trong dữ liệu

Giả sử bạn muốn có dấu ngoặc kép xung quanh tất cả dữ liệu văn bản. Để đạt được điều này, hãy đặt đối số

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
05 thành
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
50

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
93

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
97

Sản lượng dự kiến

khách hàng. csv

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
98

Bây giờ tất cả các tên và địa chỉ đều có dấu ngoặc kép xung quanh chúng

Nếu bạn muốn có dấu ngoặc kép quanh tất cả các trường bất kể ký tự trích dẫn hay dấu phân cách có xuất hiện trong dữ liệu hay không, hãy đặt

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
05 thành
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
07

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
93

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
00

Sản lượng dự kiến

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
01

Bây giờ mọi thứ đều được trích dẫn kép

Điều quan trọng cần lưu ý là khi trích dẫn được bật [i. e Tham số

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
05 có giá trị khác với
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
09], mô-đun
id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
9 sử dụng
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
03 [mặc định là
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
04] để trích dẫn trường

Danh sách sau đây thay đổi ký tự trích dẫn từ trích dẫn kép [______304] thành trích dẫn đơn [

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
19]

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
93

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
03

Sản lượng dự kiến

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
04

Trong trường hợp này, mô-đun

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
9 sử dụng trích dẫn đơn [
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
19] thay vì [
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
04] để trích dẫn các trường chứa ký tự trích dẫn hoặc dấu phân cách

Chúng tôi cũng có thể tắt trích dẫn tất cả cùng nhau bằng cách đặt

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
05 thành
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
09. Tuy nhiên, nếu bạn làm điều đó và ký tự phân cách xuất hiện trong dữ liệu thì bạn sẽ gặp lỗi như thế này

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
93

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
06

Sản lượng dự kiến

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
07

Vấn đề là trường địa chỉ chứa các dấu phẩy được nhúng [

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
68] và vì chúng tôi đã tắt khả năng trích dẫn các trường, mô-đun
id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
9 không biết cách thoát khỏi chúng đúng cách

Đây là lúc đối số

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
10 phát huy tác dụng. Phải mất một chuỗi ký tự sẽ được sử dụng để thoát khỏi dấu phân cách khi tắt trích dẫn [i. e
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
68]

Danh sách sau đặt

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
10 thành dấu gạch chéo ngược [
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
24]

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
93

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
09

Sản lượng dự kiến

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
10

Lưu ý rằng dấu phẩy [

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
68] trong trường địa chỉ được thoát bằng ký tự dấu gạch chéo ngược [
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
24]

Bây giờ bạn đã hiểu rõ về các đối số định dạng khác nhau và ngữ cảnh mà chúng được sử dụng với hàm

import csv

with open['employees.csv', 'rt'] as f:
    csv_reader = csv.reader[f]

    next[csv_reader] # skip the heading

    for line in csv_reader:
        print[line[0], line[1], line[2]]
1 và
import csv

with open['employees.csv', 'rt'] as f:
    csv_reader = csv.reader[f]

    next[csv_reader] # skip the heading

    for line in csv_reader:
        print[line[0], line[1], line[2]]
2. Trong phần tiếp theo sẽ xem một số cách khác để đọc và ghi dữ liệu

Đọc tệp CSV bằng DictReader

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
75 hoạt động gần như chính xác như
import csv

with open['employees.csv', 'rt'] as f:
    csv_reader = csv.reader[f]

    next[csv_reader] # skip the heading

    for line in csv_reader:
        print[line[0], line[1], line[2]]
1 nhưng thay vì trả về một dòng dưới dạng danh sách, nó trả về một từ điển. Cú pháp của nó như sau

cú pháp.

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
77

Đối số Mô tả ____79[bắt buộc] Nó đề cập đến đối tượng tệp.

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
79[tùy chọn] Nó đề cập đến danh sách các khóa sẽ được sử dụng trong từ điển được trả về theo thứ tự. Nếu bị bỏ qua, tên trường được suy ra từ hàng đầu tiên của tệp CSV.
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
80[tùy chọn] Nếu hàng có nhiều trường hơn chỉ định trong tham số
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
79, thì các trường còn lại được lưu trữ dưới dạng chuỗi được khóa bởi giá trị của đối số
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
80.
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
83[tùy chọn] Nó cung cấp giá trị cho các trường bị thiếu trong đầu vào.
id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
60[tùy chọn] Phương ngữ đề cập đến các cách khác nhau để định dạng tài liệu CSV. Theo mặc định, mô-đun
id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
9 sử dụng định dạng giống như Microsoft excel. Chúng tôi sẽ thảo luận chi tiết về phương ngữ sau trong bài viết này.
id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
62Nó đề cập đến các đối số định dạng và hoạt động chính xác như
import csv

with open['employees.csv', 'rt'] as f:
    csv_reader = csv.reader[f]

    next[csv_reader] # skip the heading

    for line in csv_reader:
        print[line[0], line[1], line[2]]
1 và
import csv

with open['employees.csv', 'rt'] as f:
    csv_reader = csv.reader[f]

    next[csv_reader] # skip the heading

    for line in csv_reader:
        print[line[0], line[1], line[2]]
2

Hãy lấy một số ví dụ

ví dụ 1

khách hàng. csv

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
10

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
12

Sản lượng dự kiến

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
13

Trong trường hợp này, tên trường được suy ra từ dòng đầu tiên [hoặc tiêu đề] của tệp CSV

ví dụ 2. Sử dụng tham số

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
79

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
14

Tệp CSV này không có tiêu đề. Vì vậy, chúng tôi phải cung cấp tên trường thông qua tham số

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
79

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
15

Sản lượng dự kiến

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
16

ví dụ 3. Sử dụng tham số

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
80

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
14

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
18

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
19

Sản lượng dự kiến

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
20

Lưu ý rằng địa chỉ và mã zip hiện được lưu trữ dưới dạng chuỗi được khóa bởi giá trị

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
92

Ví dụ 4. Sử dụng

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
83

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
14

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
18

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
23

Sản lượng dự kiến

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
24

Trong trường hợp này, chúng tôi đã chỉ định trường thêm hai trường.

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
94 và
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
95. Các giá trị cho các trường bổ sung được cung cấp bởi đối số
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
83

Viết tệp CSV bằng DictWriter[]

Đối tượng

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
97 ghi từ điển vào tệp CSV. Cú pháp của nó như sau

cú pháp.

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
98

Đối sốMô tả

import csv

with open['employees.csv', 'rt'] as f:
    csv_reader = csv.reader[f]

    next[csv_reader] # skip the heading

    for line in csv_reader:
        print[line[0], line[1], line[2]]
9Nó đề cập đến đối tượng tệp
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
79Nó đề cập đến tên trường và thứ tự chúng sẽ được ghi vào tệp.
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
83Nó cung cấp giá trị còn thiếu cho các khóa không tồn tại trong từ điển.
Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
02Nó kiểm soát hành động cần thực hiện nếu từ điển chứa khóa, không tìm thấy trong đối số
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
79. Theo mặc định,
Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
02 được đặt thành
Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
05, có nghĩa là một ngoại lệ sẽ được đưa ra trong trường hợp như vậy. Nếu bạn muốn bỏ qua các giá trị bổ sung, hãy đặt
Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
02 thành
Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
07

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
97 cung cấp ba phương thức sau để ghi dữ liệu

MethodDescription

Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
09Viết tiêu đề [i. e
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
79] vào tệp CSV và trả về
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
12.
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
40Ghi một hàng dữ liệu và trả về số ký tự đã viết.
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
41 phải là một chuỗi các chuỗi và số.
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
42Ghi nhiều hàng dữ liệu và trả về
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
12.
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
44 phải là một dãy

Hãy lấy một số ví dụ

ví dụ 1

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
25

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
26

Sản lượng dự kiến

khách hàng độc tài. csv

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
95

ví dụ 2. Sử dụng

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
83

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
25

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
29

Sản lượng dự kiến

khách hàng độc tài. csv

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
0

Trong trường hợp này, giá trị của trường

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
95 bị thiếu trong từ điển. Do đó, giá trị của
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
83 sẽ được sử dụng cho trường
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
95

ví dụ 3. Sử dụng

Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
02

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
1

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
2

Ở đây, từ điển chứa một khóa phụ tên là

Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
22 không có trong danh sách
Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
23. Để ngăn ngoại lệ được nâng lên, chúng tôi đã đặt
Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
02 thành
Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
07

Sản lượng dự kiến

khách hàng độc tài. csv

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
3

Tạo phương ngữ

Trước đó trong bài đăng này, chúng tôi đã tìm hiểu các tham số định dạng khác nhau cho phép chúng tôi tùy chỉnh đối tượng trình đọc và trình ghi để phù hợp với sự khác biệt trong các quy ước CSV

Nếu bạn thấy mình chuyển đi chuyển lại cùng một nhóm tham số định dạng. Cân nhắc việc tạo Phương ngữ của riêng bạn

Một đối tượng phương ngữ hoặc [đơn giản là phương ngữ] là một cách để nhóm các tham số định dạng khác nhau. Khi bạn đã tạo đối tượng phương ngữ, chỉ cần chuyển đối tượng đó cho người đọc hoặc người viết, thay vì chuyển riêng từng đối số định dạng

Để tạo một phương ngữ mới, chúng ta sử dụng hàm

Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
26. Nó chấp nhận tên phương ngữ dưới dạng chuỗi và một hoặc nhiều tham số định dạng làm đối số từ khóa

Bảng sau liệt kê tất cả các đối số định dạng cùng với các giá trị mặc định của chúng

ArgumentDefaultDescription

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
67
id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
68Nó đề cập đến ký tự được sử dụng để phân tách các giá trị [hoặc trường] trong tệp CSV.
id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
69
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
00Nó kiểm soát cách diễn giải khoảng trắng sau dấu phân cách. Nếu
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
14, các khoảng trắng ban đầu sẽ bị xóa.
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
01
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
02Nó đề cập đến chuỗi ký tự được sử dụng để kết thúc dòng.
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
03
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
04Nó đề cập đến chuỗi ký tự đơn sẽ được sử dụng để báo giá trị nếu các ký tự đặc biệt [như dấu phân cách] xuất hiện bên trong trường.
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
05
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
09kiểm soát khi trích dẫn nên được tạo bởi người viết hoặc được người đọc công nhận [xem ở trên để biết các tùy chọn khác].
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
10
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
12Nó đề cập đến chuỗi một ký tự được sử dụng để thoát khỏi dấu phân cách khi trích dẫn được đặt thành.
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
13
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
14kiểm soát việc xử lý dấu ngoặc kép bên trong các trường. Khi
Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
14, hai trích dẫn liên tiếp được hiểu là một trong khi đọc và khi ghi, mỗi ký tự trích dẫn được nhúng trong dữ liệu được ghi dưới dạng hai trích dẫn

Hãy tạo một phương ngữ đơn giản

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
4

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
5

Sản lượng dự kiến

giải oscar. csv

id name email
1 John john@mail.com
2 Bob bob@mail.com
3 Mary mary@mail.com
6

Hướng dẫn khác [Nhà tài trợ]

Trang web này được hỗ trợ rộng rãi bởi DataCamp. DataCamp cung cấp Hướng dẫn Python tương tác trực tuyến cho Khoa học dữ liệu. Tham gia cùng hơn một triệu người học khác và bắt đầu học Python cho khoa học dữ liệu ngay hôm nay

Tệp được phân cách bằng đường ống là gì?

Định dạng chuỗi được phân cách bằng dấu gạch ngang đại diện cho một chuỗi Unicode chứa nhiều chuỗi con, được phân cách bằng dấu gạch ngang [". "] ký tự . Mỗi chuỗi con không thể chứa ký tự ống.

Làm cách nào để ghi vào tệp CSV bằng Python?

Lớp DictWriter[] có thể được sử dụng để ghi vào tệp CSV từ từ điển Python . Ở đây, tệp - tệp CSV nơi chúng tôi muốn ghi vào. tên trường - một đối tượng danh sách sẽ chứa các tiêu đề cột chỉ định thứ tự ghi dữ liệu trong tệp CSV.

Dấu phân cách trong tệp CSV là gì?

Do đó, tệp CSV đại diện cho một bảng dữ liệu [có hàng và cột]. Dấu phân cách mặc định cho tệp CSV là dấu phẩy, nhưng bất kỳ ký hiệu nào cũng có thể được sử dụng làm dấu phân cách CSV , chẳng hạn như tab ngang.

Chủ Đề