[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.com8] 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.com9
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.com9 đượ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
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]]
1import 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]]
2import 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]]
3import 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.com60[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.com9 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.com62[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.com9
Đâ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.com63 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.com6
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.com9 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"
00Name,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"
02Name,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"
04Name,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ố sauName,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 địnhName,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ườngName,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ựcName,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ànhName,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"
12Name,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. KhiName,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.com8] 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.com68]. Để đọ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.com69 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.com68]
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.com9 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.com90
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.com60[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.com9 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.com62[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.com91
id name email 1 John john@mail.com 2 Bob bob@mail.com 3 Mary mary@mail.com92
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.com93
id name email 1 John john@mail.com 2 Bob bob@mail.com 3 Mary mary@mail.com94
Đầ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.com95
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.com93
id name email 1 John john@mail.com 2 Bob bob@mail.com 3 Mary mary@mail.com97
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.com98
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.com93
"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.com9 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.com93
"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.com9 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.com93
"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.com68] 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.com9 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.com93
"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.com68] 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.com60[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.com9 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.com62Nó đề 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.com95
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.com0
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.com1
id name email 1 John john@mail.com 2 Bob bob@mail.com 3 Mary mary@mail.com2
Ở đâ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.com3
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.com67
id name email 1 John john@mail.com 2 Bob bob@mail.com 3 Mary mary@mail.com68Nó đề 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.com69
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.com4
id name email 1 John john@mail.com 2 Bob bob@mail.com 3 Mary mary@mail.com5
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.com6
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