Module csv Python dùng để xử lý tệp CSV. CSV lưu trữ lượng lớn thông tin, module csv cho phép Python đọc/ghi tệp CSV bằng hàm reader() và writer().
Đọc, ghi, thao tác dữ liệu là phần thiết yếu của lập trình. Biết cách xử lý tệp trong Python để đọc/ghi dữ liệu từ nguồn bên ngoài rất hữu ích.
Ví dụ: bạn chủ quán kem muốn phân tích xu hướng khách hàng. Dùng Python phân tích dữ liệu đơn hàng để biết vị kem phổ biến, mức chi tiêu...
Module csv Python giải quyết bài toán này. CSV lưu dữ liệu lớn, module csv cho phép parse (phân tích) tệp đó trong Python. Hướng dẫn này khám phá cách đọc/ghi tệp CSV với module csv.
Ôn Lại CSV
Khi làm việc với dữ liệu, bạn có danh sách dữ liệu cách nhau bởi dấu phẩy. Ví dụ: danh sách đơn kem, giá trị cách nhau bởi dấu phẩy. Cấu trúc này gọi là dữ liệu CSV (Comma-Separated Values).
Tệp văn bản thường lưu dữ liệu nhưng không lưu dữ liệu có cấu trúc. CSV cho phép lưu dữ liệu có cấu trúc dạng bảng, tham chiếu trong code được, tương tự spreadsheet/database. Ví dụ: tệp CSV lưu vị kem hoặc thông tin nhà cung cấp.
Ví dụ tệp CSV:
suppliers.csv Hendersons Creamery, 123 Main Street, Cream Peterson Chocolate, 129 Second Street, Chocolate Sprinkles
Tệp lưu 3 trường: tên nhà cung cấp, địa chỉ, sản phẩm cung cấp. 2 dòng dữ liệu: Hendersons Creamery và Peterson Chocolate.
Vì dữ liệu có cấu trúc CSV, ta có thể parse qua chương trình Python để lấy dữ liệu cột/hàng cụ thể.
Module CSV Python
Module csv parse dữ liệu CSV trong Python. Nếu có tệp CSV thông tin nhà cung cấp, dùng module csv để truy xuất và xử lý dữ liệu.
csv là module tích hợp sẵn, nhưng phải import trước khi dùng:
import csv
Đọc Tệp CSV
Trước khi xử lý dữ liệu CSV, phải đọc tệp. Module csv có phương thức reader() đọc tệp CSV vào chương trình. Hàm reader nhận mỗi dòng của tệp chỉ định và chuyển thành danh sách (list) các cột.
Giả sử tệp suppliers.csv chứa:
Hendersons Creamery, 123 Main Street, Cream Peterson Chocolate, 129 Second Street, Chocolate Sprinkles HW Smith and Co, 17 Boston Avenue, Ice Cream Cones
Code đọc dữ liệu:
import csv
with open("suppliers.csv", "r") as f:
contents = csv.reader(f)
for c in contents:
print(c)
Giải thích: Dòng 1 import module csv. Dòng 2 dùng with mở tệp, gán đối tượng tệp cho f. Dòng 3 dùng csv.reader(f) đọc nội dung. Cuối cùng vòng lặp for in từng dòng và in ra.
Kết quả:
['Hendersons Creamery', ' 123 Main Street', ' Cream'] ['Peterson Chocolate', ' 129 Second Street', ' Chocolate Sprinkles'] ['HW Smith and Co', ' 17 Boston Avenue', ' Ice Cream Cones']
Mỗi dòng thành một mảng (list). Bây giờ có thể thao tác dữ liệu trong chương trình.
Ví dụ: gửi thông báo hủy đơn cho nhà cung cấp. Lấy địa chỉ (index 1):
for c in contents:
print(c[1])
Kết quả: 123 Main Street, 129 Second Street, 17 Boston Avenue.
Đọc dữ liệu vào mảng (list) để lưu dùng sau - thao tác phổ biến:
import csv
suppliers = []
with open("suppliers.csv", "r") as f:
contents = csv.reader(f)
for c in contents:
suppliers.append(c)
print(suppliers)
Kết quả: list lồng nhau chứa toàn bộ dữ liệu.
Ghi Vào Tệp CSV
Module csv có phương thức writer() ghi dữ liệu vào tệp CSV. Hàm writer() tạo đối tượng ghi, sau đó dùng phương thức writerow() ghi từng dòng.
Giả sử chương trình thêm cột "Primary Supplier" (Yes/No) cho mỗi nhà cung cấp. Code ghi ra tệp mới:
import csv
suppliers = []
with open("suppliers.csv", "r") as f:
contents = csv.reader(f)
for c in contents:
c.append("Yes")
suppliers.append(c)
with open("new_suppliers.csv", "w") as f:
write_to_file = csv.writer(f)
for s in suppliers:
write_to_file.writerow(s)
Đầu code đọc suppliers.csv, chuyển nội dung sang mảng suppliers, thêm giá trị "Yes" cho mỗi mục. Sau đó mở new_suppliers.csv chế độ ghi ("w"), dùng writer() chuẩn bị ghi. Vòng lặp for dùng writerow() ghi từng nhà cung cấp.
Kết quả tệp new_suppliers.csv:
Hendersons Creamery, 123 Main Street, Cream,Yes Peterson Chocolate, 129 Second Street, Chocolate Sprinkles,Yes HW Smith and Co, 17 Boston Avenue, Ice Cream Cones,Yes
Không cần lặp nếu ghi toàn bộ mảng suppliers. Dùng writerows() (có s):
write_to_file = csv.writer(f) write_to_file.writerows(suppliers)
Quoting (Trích Dẫn) Trong CSV
Ví dụ trên ghi dữ liệu nguyên trạng. Nhưng đôi khi muốn mỗi giá trị được bao bởi dấu ngoặc kép. Ví dụ: tên nhà cung cấp chứa dấu phẩy → làm hỏng cấu trúc CSV.
Module csv có 4 chế độ quoting (truyền tham số cho csv.writer()):
csv.QUOTE_ALL: Bao mọi chuỗi trong ngoặc kép.csv.QUOTE_NONNUMERIC: Trích dẫn tất cả trường chuỗi (không phải số).csv.QUOTE_MINIMAL: Chỉ trích dẫn trường có ký tự đặc biệt (dấu phẩy, ngoặc kép...).csv.QUOTE_NONE: Không trích dẫn gì.
Ví dụ trích dẫn tất cả:
write_to_file = csv.writer(f, quoting=csv.QUOTE_ALL)
Kết quả new_suppliers.csv:
"Hendersons Creamery"," 123 Main Street"," Cream","Yes" "Peterson Chocolate"," 129 Second Street"," Chocolate Sprinkles","Yes" "HW Smith and Co"," 17 Boston Avenue"," Ice Cream Cones","Yes"
Kết Luận
Đọc/ghi tệp cho phép truy xuất và lưu trữ dữ liệu từ chương trình Python. Ví dụ: menu kem với giá muốn xử lý trong Python → lưu trong tệp.
Hướng dẫn này khám phá cơ bản module csv Python và cách hoạt động. Cũng thảo luận đọc/ghi tệp dùng đối tượng reader() và writer().
Bây giờ bạn đã sẵn sàng đọc/ghi dữ liệu CSV với Python như chuyên gia!
Công ty toàn cầu đang tuyển người biết code Python. Tải ứng dụng Career Karma miễn phí hôm nay để biết thêm cách học Python giúp bạn bước vào nghề công nghệ!