Python CSV: Đọc và Viết Bảng tính
Tìm hiểu cách xử lý dữ liệu CSV bằng Python. Nắm vững csv.reader, csv.writer và DictReader/DictWriter để phân tích cú pháp bảng hiệu quả.
Tổng quan
CSV (Giá trị được phân tách bằng dấu phẩy) là định dạng phổ biến để xuất và nhập dữ liệu từ bảng tính và cơ sở dữ liệu quan hệ. Vì tệp CSV là tệp văn bản đơn giản nên chúng được hỗ trợ phổ biến bởi các công cụ phân tích, nền tảng cơ sở dữ liệu và ngôn ngữ lập trình. Python có mô-đun `csv` tích hợp được tối ưu hóa đặc biệt để phân tích cú pháp, ghi và thao tác dữ liệu dạng bảng mà không cần thư viện của bên thứ ba như gấu trúc.
Mô-đun csv cung cấp hai giao diện chính: trình đọc/ghi dựa trên danh sách và trình đọc/ghi dựa trên từ điển. `csv.reader()` và `csv.writer()` biểu thị mỗi dòng trong CSV dưới dạng danh sách các chuỗi, đơn giản nhưng yêu cầu tham chiếu các cột theo chỉ mục số của chúng. Để có cách tiếp cận mạnh mẽ hơn, các nhà phát triển sử dụng `csv.DictReader()` và `csv.DictWriter()`. Các lớp này ánh xạ từng hàng vào một từ điển bằng cách sử dụng hàng tiêu đề CSV làm khóa, tạo ra mã rất dễ đọc và không bị hỏng nếu các cột được sắp xếp lại.
Khi xử lý tệp CSV, chi tiết cú pháp rất quan trọng. Các chương trình khác nhau sử dụng các dấu phân cách khác nhau (như tab hoặc dấu chấm phẩy) và xử lý dấu ngoặc kép hoặc kết thúc dòng theo những cách riêng biệt. Mô-đun `csv` cho phép bạn xác định các dấu phân cách tùy chỉnh, quy tắc trích dẫn và ký tự thoát thông qua tham số 'phương ngữ'. Ngoài ra, khi mở tệp CSV bằng Python, yêu cầu quan trọng là phải chuyển `newline=''` cho hàm `open()` để ngăn chặn sự cố dòng trống trên các hệ điều hành khác nhau.
Đầu ra mã & thực thi
Ghi dữ liệu vào tệp CSV bằng DictWriter và đọc lại bằng DictReader.
import csv
filename = "employees.csv"
fieldnames = ["id", "name", "department"]
data = [
{"id": "101", "name": "Bob", "department": "HR"},
{"id": "102", "name": "Alice", "department": "Engineering"}
]
# Write dict data to CSV
with open(filename, "w", newline="") as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(data)
print("CSV written successfully.\n--- Reading CSV ---")
# Read CSV data back as dictionaries
with open(filename, "r", newline="") as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
print(f"Employee {row['name']} works in {row['department']}.")CSV written successfully.
--- Reading CSV ---
Employee Bob works in HR.
Employee Alice works in Engineering.Triển khai từng bước
- Xuất bản ghi bảng tính để phân tích tài chính
- Nhập danh mục danh sách liên hệ vào cơ sở dữ liệu
- Định dạng kết quả thống kê từ các tập lệnh tính toán
Câu hỏi thường gặp
Tại sao tôi cần chỉ định dòng mới="" khi mở tệp CSV?
Điều này được yêu cầu bởi trình ghi nội bộ của mô-đun csv để ngăn chặn việc chèn thêm các dòng trống, đặc biệt là trên nền tảng Windows.
Làm cách nào tôi có thể phân tích cú pháp tệp CSV sử dụng tab thay vì dấu phẩy?
Bạn có thể chuyển tham số dấu phân cách cho trình đọc hoặc trình ghi, ví dụ: csv.reader(file, delimiter='\t').
Chủ đề liên quan
Tìm hiểu cách đọc và ghi tệp bằng Python. Làm chủ các trình quản lý open(), read(), write() và bối cảnh để xử lý các thao tác tệp một cách an toàn mà không bị rò rỉ tài nguyên.
Phân tích cú pháp JSON của PythonTìm hiểu cách đọc, viết và phân tích dữ liệu JSON trong Python. Nắm vững json.loads, json.dumps và tùy chỉnh bộ mã hóa/giải mã JSON.
Tài nguyên Python được đề xuất
Mở rộng kiến thức của bạn với các hướng dẫn tương tác, bảng ghi chú và so sánh mã có liên quan.
Cách đọc và phân tích tệp CSV bằng Python
Tìm hiểu cách đọc và phân tích cú pháp tệp CSV bằng Python bằng mô-đun csv tích hợp. Đọc thành thạo dưới dạng danh sách, trình đọc từ điển và dấu phân cách tùy chỉnh.
Bảng cheat phương thức chuỗi Python
Hướng dẫn tham khảo đầy đủ về thao tác chuỗi Python. Làm chủ định dạng, tìm kiếm, phân tách, thay thế và kiểm tra thuộc tính chuỗi.
Python vs JavaScript: Ngôn ngữ lập trình nào tốt nhất?
So sánh toàn diện giữa Python và JavaScript. Khám phá sự khác biệt về cú pháp, hiệu suất, trường hợp sử dụng (phụ trợ so với giao diện người dùng) và các ví dụ về mã hóa.