File CSV (Comma Separated Values) là file văn bản thuần túy trong đó các giá trị dữ liệu được phân tách bằng dấu phẩy, do đó biểu diễn dữ liệu dạng bảng dưới dạng văn bản thuần túy nhờ dấu phẩy. File CSV có đuôi .csv.
Dưới đây là dạng của file CSV:
Sr.No,Name,City,Age 1,Rahul,Kolkata,21 2,Karan,Amritsar,23 3,Priya,Bangalore,20
Để tạo file CSV, bạn có thể viết theo định dạng trên trong notepad và lưu với đuôi .csv.
Đọc file CSV trong Python
File csv lưu trên ổ cứng local có thể đọc bằng Python.
Cần import module csv trong Python. Sau đó mở file ở chế độ đọc ('r') vì cần đọc dữ liệu. Hàm csv.reader() dùng để đọc dữ liệu từ file CSV. csv.reader() trả về một đối tượng reader có thể lặp (iterable). Cần lặp qua đối tượng reader này để xử lý nội dung file csv.
Triển khai
Giả sử có file csv tên ttp.csv lưu trên hệ thống local. Nội dung file như ví dụ trên. Cần đọc nội dung file và in từng dòng.
Ví dụ
import csv
with open('ttp.csv', 'r') as file:
filecontent = csv.reader(file)
for row in filecontent:
print(row)Lưu ý: Đảm bảo file csv và chương trình Python ở cùng vị trí (cùng thư mục).
Kết quả
['Sr.No', 'Name', 'City', 'Age'] ['1', 'Rahul', 'Kolkata', '21'] ['2', 'Karan', 'Amritsar', '23'] ['3', 'Priya', 'Bangalore', '20']
Giải thích từng dòng
- import csv – Cần import module csv để dùng các hàm đọc file.
- Mở file bằng
open().open()nhận hai tham số: tên file và chế độ mở. Ở đây chế độ là'r'để đọc. - Đọc nội dung file bằng
csv.reader(). Trả về iterable reader object gán cho biến. - Lặp qua filecontents để in nội dung file theo hàng.
File csv và chương trình Python đọc nó PHẢI ở cùng vị trí.
Nếu file ở vị trí khác, sẽ ném exception:
FileNotFoundError: [Errno 2] No such file or directory: 'ttp.csv'
Đọc file CSV với delimiter tùy chỉnh
Dấu phẩy không phải delimiter duy nhất. Các delimiter khác: :, ;, |, v.v. Nếu dùng delimiter khác, cần sửa code.
Triển khai
Giả sử file csv trên dùng : thay vì dấu phẩy. Code sẽ sửa như sau:
Ví dụ
import csv
with open('ttp.csv', 'r') as file:
filecontent = csv.reader(file, delimiter=':')
for row in filecontent:
print(row)Kết quả
['Sr', 'No', 'Name', 'City', 'Age'] ['1', 'Rahul', 'Kolkata', '21'] ['2', 'Karan', 'Amritsar', '23'] ['3', 'Priya', 'Bangalore', '20']
Chỉ sửa là chỉ định delimiter trong csv.reader(). Nếu delimiter là |, chỉ định tương tự.
Nếu không chỉ định delimiter cho file dùng :, code mặc định chỉ coi dấu phẩy là delimiter và vì không có dấu phẩy, cả hàng sẽ coi là một item duy nhất.
Nếu không chỉ định delimiter trong code trên cho file dùng :, sẽ ra kết quả sai:
['Sr:No:Name:City:Age'] ['1:Rahul:Kolkata:21'] ['2:Karan:Amritsar:23'] ['3:Priya:Bangalore:20']
Như output trên, cả hàng được coi là một item đơn lẻ.