Đọc File CSV với Thư Viện csv trong Python

Tạo bởi Hoàng Vũ, chỉnh sửa cuối lúc 2 tháng 2, 2025

CSV (Comma-Separated Values) là định dạng phổ biến để lưu trữ dữ liệu dạng bảng, trong đó các giá trị được phân tách bằng dấu phẩy hoặc dấu chấm phẩy. Python cung cấp thư viện csv để đọc và xử lý file CSV một cách dễ dàng.

1. Đọc File CSV Dòng Theo Dòng

Dưới đây là cách đọc file CSV từng dòng bằng csv.reader().

Ví dụ

Giả sử ta có file data.csv với nội dung sau:

Tên,Tuổi,Thành phố
An,25,Hà Nội
Bình,30,Hồ Chí Minh
Chi,22,Đà Nẵng

Ta có thể đọc file này như sau:

import csv

with open("data.csv", mode="r", encoding="utf-8") as file:
    reader = csv.reader(file)
    
    # Đọc tiêu đề
    header = next(reader)
    print("Tiêu đề:", header)
    
    # Đọc từng dòng dữ liệu
    for row in reader:
        print("Dòng:", row)

Kết quả:

Tiêu đề: ['Tên', 'Tuổi', 'Thành phố']
Dòng: ['An', '25', 'Hà Nội']
Dòng: ['Bình', '30', 'Hồ Chí Minh']
Dòng: ['Chi', '22', 'Đà Nẵng']

Giải thích:

  • csv.reader(file) đọc file CSV thành danh sách các dòng.
  • next(reader) lấy dòng đầu tiên làm tiêu đề.
  • Vòng lặp for row in reader đọc từng dòng dữ liệu.

2. Đọc File CSV Thành Danh Sách Dictionary

Dùng csv.DictReader() để đọc file CSV dưới dạng dictionary (từ điển).

import csv

with open("data.csv", mode="r", encoding="utf-8") as file:
    reader = csv.DictReader(file)
    
    for row in reader:
        print(row)

Kết quả:

{'Tên': 'An', 'Tuổi': '25', 'Thành phố': 'Hà Nội'}
{'Tên': 'Bình', 'Tuổi': '30', 'Thành phố': 'Hồ Chí Minh'}
{'Tên': 'Chi', 'Tuổi': '22', 'Thành phố': 'Đà Nẵng'}

Giải thích:

  • csv.DictReader(file) tự động sử dụng dòng đầu tiên làm key của dictionary.
  • Mỗi dòng dữ liệu sẽ được đọc thành một dictionary.

3. Đọc File CSV với Dấu Phân Tách Khác (Dấu Chấm Phẩy, Tab, v.v.)

Nếu file CSV sử dụng dấu phân tách khác (ví dụ: dấu chấm phẩy ;), ta cần chỉ định delimiter.

Ví dụ, file data.csv:

Tên;Tuổi;Thành phố
An;25;Hà Nội
Bình;30;Hồ Chí Minh
Chi;22;Đà Nẵng

Cách đọc file này:

import csv

with open("data.csv", mode="r", encoding="utf-8") as file:
    reader = csv.reader(file, delimiter=";")
    
    for row in reader:
        print(row)

Giải thích:

  • Thêm delimiter=";" để Python hiểu rằng dữ liệu được phân tách bằng dấu ;.

Tóm Tắt

Phương pháp Cách sử dụng
csv.reader() Đọc file CSV thành danh sách từng dòng.
csv.DictReader() Đọc file CSV thành danh sách dictionary.
delimiter=";" Đọc file CSV với dấu phân tách khác (chấm phẩy, tab, v.v.).

Khi làm việc với file CSV, luôn mở file với with open() để đảm bảo file được đóng tự động sau khi đọc.

Website Logo

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.

Bình luận

Website Logo

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.

Liên hệ công việc qua email dưới đây.

lhvuctu@gmail.com

Chúng Tôi Trên

Bạn đang muốn học về lập trình website?

Bạn cần nâng cao kiến thức chuyên nghiệp hơn để nâng cao cơ hội nghề nghiệp? Liên hệ