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.
Tổng quan
CSV (Giá trị được phân tách bằng dấu phẩy) là định dạng tệp phổ biến để lưu trữ tập dữ liệu dạng bảng. Cho dù nhập cơ sở dữ liệu, xuất bảng tính hay tải xuống nhật ký, đọc CSV là một kỹ năng cốt lõi. Python bao gồm một mô-đun `csv` tích hợp chuyên dụng, được tối ưu hóa cao để phân tích các tệp CSV một cách dễ dàng mà không cần thư viện của bên thứ ba như gấu trúc.
Hàm `csv.reader` đọc từng dòng tệp và phân tích cú pháp tệp đó, phân tách từng hàng bằng dấu phân cách bằng dấu phẩy và trả về danh sách các chuỗi. Nếu tệp CSV của bạn có hàng tiêu đề (ví dụ: nhãn cột), thì việc sử dụng `csv.DictReader` thường được ưu tiên hơn. Nó tự động phân tích từng hàng thành một từ điển trong đó các khóa là nhãn cột, giúp mã dễ đọc hơn và mạnh mẽ hơn trước những thay đổi trong thứ tự cột.
Khi mở tệp CSV, cách tốt nhất là đặt `newline=""` trong câu lệnh `open()`. Điều này ngăn Python thực hiện các bản dịch dòng mới tự động, điều này có thể dẫn đến lỗi phân tích cú pháp trên một số hệ điều hành nhất định. Ngoài ra, hãy luôn chỉ định `encoding="utf-8"` để xử lý các ký tự đặc biệt.
Đầu ra mã & thực thi
Tập lệnh này minh họa việc viết một tệp CSV mẫu và đọc nó bằng cả csv.reader và csv.DictReader.
import csv
# Writing a sample CSV file
sample_content = [
["name", "role", "salary"],
["Alice", "Developer", "90000"],
["Bob", "Manager", "110000"]
]
with open("employees.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerows(sample_content)
# 1. Reading CSV using csv.reader (List representation)
print("--- Using csv.reader ---")
with open("employees.csv", "r", newline="", encoding="utf-8") as file:
reader = csv.reader(file)
header = next(reader) # Skip header row
print("Header:", header)
for row in reader:
print(f"Employee: {row[0]} | Role: {row[1]}")
# 2. Reading CSV using csv.DictReader (Dictionary representation)
print("\n--- Using csv.DictReader ---")
with open("employees.csv", "r", newline="", encoding="utf-8") as file:
dict_reader = csv.DictReader(file)
for row in dict_reader:
print(f"Name: {row['name']} | Role: {row['role']} | Salary: {row['salary']}")--- Using csv.reader ---
Header: ['name', 'role', 'salary']
Employee: Alice | Role: Developer
Employee: Bob | Role: Manager
--- Using csv.DictReader ---
Name: Alice | Role: Developer | Salary: 90000
Name: Bob | Role: Manager | Salary: 110000Triển khai từng bước
- Nhập mô-đun csv tích hợp trong tập lệnh của bạn.
- Mở tệp CSV bằng cách sử dụng open("employees.csv", "r", newline="", Encoding="utf-8") làm tệp.
- Chuyển đối tượng tệp tới csv.reader(file) để phân tích các hàng của tệp dưới dạng danh sách các chuỗi.
- Sử dụng csv.DictReader(file) để phân tích các hàng dưới dạng ánh xạ từ điển tương ứng với tiêu đề cột.
Câu hỏi thường gặp
Tại sao tôi nên đặt dòng mới="" khi mở tệp CSV?
Việc đặt dòng mới="" ngăn Python sửa đổi các ký tự cuối dòng một cách linh hoạt, đảm bảo mô-đun csv có thể phân tích chính xác các dòng mới kiểu csv trên các hệ điều hành khác nhau.
Làm cách nào để phân tích cú pháp tệp CSV sử dụng tab hoặc dấu chấm phẩy thay vì dấu phẩy?
Bạn có thể chuyển một dấu phân cách tùy chỉnh cho hàm đọc: csv.reader(file, delimiter="\t") hoặc csv.reader(file, delimiter=";").
Chủ đề liên quan
Tìm hiểu cách đọc tệp bằng Python. Nắm vững câu lệnh mở, dòng đọc, dòng đọc và xử lý các ngoại lệ tệp một cách an toàn.
Cách ghi vào tệp bằng PythonTìm hiểu cách viết văn bản vào tệp bằng Python. Nắm vững sự khác biệt giữa chế độ ghi ("w") và chắp thêm ("a") bằng trình quản lý bối cảnh an toàn.
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.
I/O tệp Python
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.
Bảng cheat hoạt động của tệp Python
Tham khảo nhanh về đọc và ghi tệp bằng Python. Nắm vững các chế độ mở, trình quản lý bối cảnh và đọc từng dòng.
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.