Hướng dẫn python csv reader - trình đọc csv python

Nội dung chính

  • Trước khi đọc file trong python
  • Đọc file csv trong python | csv.reader()
  • Hàm csv.reader trong Python
  • Đọc file csv và lưu kết quả dưới dạng list bằng hàm csv.reader()
  • Lấy giá trị của hàng, cột và cell chỉ định trong file csv
  • Chỉ định dấu phân cách delimiter
  • Xử lý dấu ngoặc kép
  • Đọc file CSV dưới dạng dictionary trong python | csv.DictReader
  • Đọc file csv và lưu kết quả dưới dạng dictionary
  • Tổng kết và thực hành

Hướng dẫn cách xử lý file CSV trong python. Bạn sẽ học được cách đọc file csv trong python dưới dạng list bằng hàm csv.reader hay dưới dạng dictionary bằng class csv.DictReader. Bạn cũng sẽ học được cách mở file csv trong python với các trường hợp đặc biệt như mở file CSV chứa dấu ngoặc kép, chứa header v.v.., qua đó có thể lấy giá trị của hàng, cột và cell trong file csv python sau bài học này.xử lý file CSV trong python. Bạn sẽ học được cách đọc file csv trong python dưới dạng list bằng hàm csv.reader hay dưới dạng dictionary bằng class csv.DictReader. Bạn cũng sẽ học được cách mở file csv trong python với các trường hợp đặc biệt như mở file CSV chứa dấu ngoặc kép, chứa header v.v.., qua đó có thể lấy giá trị của hàng, cột và cell trong file csv python sau bài học này.

Trước khi đọc file trong python

Để đọc file csv trong python, trước hết chúng ta cần mở file đó bằng hàm open() hoặc bằng câu lệnh with mà Kiyoshi đã hướng dẫn trong bài Mở và đóng file trong python.

Sau khi mở file và thu về một object file, chúng ta có thể sử dụng tới phương thức read để đọc file csv này như các loại file text khác trong python.

Giả sử chúng ta có file

import csv

with open('./user/user.csv') as f:
reader = csv.reader(f)
8 trong thư mục
import csv

with open('./user/user.csv') as f:
reader = csv.reader(f)
9 với nội dung sau đây:

Hướng dẫn python csv reader - trình đọc csv python

Chúng ta sẽ mở file csv này và thu về file object gồm nội dung file csv dưới dạng txt như sau:

with open('./user/user.csv') as f:
print(f.read())





Bạn có thể thấy các giá trị trong nội dung file csv dưới dạng txt được phân cách bởi dấu phẩy

import csv

with open('./user/user.csv') as f:
reader = csv.reader(f)
for row in reader:
print(row)






0 trong ví dụ trên.

Về cơ bản thì đến bước này là chúng ta đã đọc xong file csv trong python rồi, tuy nhiên do kết quả đọc chỉ dưới dạng txt rất khó thao tác, nên chúng ta cần chuyển kết quả này về dạng list thông qua hàm csv.reader, hoặc dạng dictionary thông qua class csv.DictReader để có thể dễ dàng thực hiện các thao tác xử lý nội dung file csv.

Và để làm được điều đó thì chúng ta cần sử dụng tới hàm csv.reader() trong module csv.

Đọc file csv trong python | csv.reader()

Hàm csv.reader trong Python

Đọc file csv và lưu kết quả dưới dạng list bằng hàm csv.reader()

Lấy giá trị của hàng, cột và cell chỉ định trong file csv

Chỉ định dấu phân cách delimiter

import csv

Xử lý dấu ngoặc kép

csv.reader(f)

Đọc file CSV dưới dạng dictionary trong python | csv.DictReader

Đọc file csv và lưu kết quả dưới dạng dictionary

Tổng kết và thực hành

import csv

with open('./user/user.csv') as f:
reader = csv.reader(f)

Đọc file csv và lưu kết quả dưới dạng list bằng hàm csv.reader()

Lấy giá trị của hàng, cột và cell chỉ định trong file csv

Chỉ định dấu phân cách delimiter

Xử lý dấu ngoặc kép

Đọc file CSV dưới dạng dictionary trong python | csv.DictReader

import csv

with open('./user/user.csv') as f:
reader = csv.reader(f)
for row in reader:
print(row)






Đọc file csv và lưu kết quả dưới dạng dictionary

Tổng kết và thực hành

with open('data/src/sample.csv') as f:
reader = csv.reader(f)
l = [row for row in reader]

print(l)

Lấy giá trị của hàng, cột và cell chỉ định trong file csv

Chỉ định dấu phân cách delimiter
Ví dụ, chúng ta lấy giá trị của hàng thứ nhất và hàng thứ hai trong file csv như sau:

print(l[0])


print(l[1])

Xử lý dấu ngoặc kép

print(l[0][0])


print(l[1][2])

Đọc file CSV dưới dạng dictionary trong python | csv.DictReader

l_hoandoi = [list(x) for x in zip(*l)]
print(l_hoandoi)


print(l_hoandoi[0])


print(l_hoandoi[1])

Đọc file csv và lưu kết quả dưới dạng dictionary

print(l[1][1])

print(type(l[1][1]))


float(l[1][1])
int(l[1][1])

Chỉ định dấu phân cách delimiter

Về mặc định, Class csv.reader() dùng dấu phẩy

import csv

with open('./user/user.csv') as f:
reader = csv.reader(f)
for row in reader:
print(row)






0 làm dấu phân cách khi đọc file csv trong python. Và dấu phẩy
import csv

with open('./user/user.csv') as f:
reader = csv.reader(f)
for row in reader:
print(row)






0 cũng được coi là dấu phân cách mặc định cho các file CSV.Tuy nhiên trong một số file CSV có thể dùng dấu khác để thay dấu phẩy làm dấu phân cách, khi đó để đọc được file csv này trong python, chúng ta cần thay đổi dấu phân cách bằng cách thay đổi giá trị đối số
import csv

with open('./user/user.csv') as f:
reader = csv.reader(f)
for row in reader:
print(row)






4.Class csv.reader() dùng dấu phẩy
import csv

with open('./user/user.csv') as f:
reader = csv.reader(f)
for row in reader:
print(row)






0 làm dấu phân cách khi đọc file csv trong python. Và dấu phẩy
import csv

with open('./user/user.csv') as f:
reader = csv.reader(f)
for row in reader:
print(row)






0 cũng được coi là dấu phân cách mặc định cho các file CSV.
Tuy nhiên trong một số file CSV có thể dùng dấu khác để thay dấu phẩy làm dấu phân cách, khi đó để đọc được file csv này trong python, chúng ta cần thay đổi dấu phân cách bằng cách thay đổi giá trị đối số
import csv

with open('./user/user.csv') as f:
reader = csv.reader(f)
for row in reader:
print(row)






4.

Ví dụ chúng ta cần đọc một file CSV có dấu phân cách là dấu cách như sau:

with open('./client/sample_space.txt') as f:
print(f.read())



Để đọc được file CSV dạng này, chúng ta chỉ định

import csv

with open('./user/user.csv') as f:
reader = csv.reader(f)
for row in reader:
print(row)






5 như sau:

import csv
0

Tương tự nếu gặp phải file CSV có định dạng dấu phân cách dưới dạng tab, chúng ta đơn giản chỉ định

import csv

with open('./user/user.csv') as f:
reader = csv.reader(f)
for row in reader:
print(row)






6 là xong.

Xử lý dấu ngoặc kép

Trong một số file CSV, các giá trị cột được lưu giữ cùng với dấu ngoặc kép

import csv

with open('./user/user.csv') as f:
reader = csv.reader(f)
for row in reader:
print(row)






7 như sau:

import csv
1

Trong trường hợp này, về mặc định thì Class csv.reader() giúp chúng ta bỏ đi các dấu ngoặc kép mà chỉ giữ lại phần giá trị ở giữa mà thôi, nên bạn không cần phải chú ý thêm.

import csv
2

Tuy nhiên trong trường hợp bạn cần giữ lại các dấu ngoặc kép đó trong kết quả, hãy chỉ định thêm đối số

import csv

with open('./user/user.csv') as f:
reader = csv.reader(f)
for row in reader:
print(row)






8 khi đọc file csv trong python như sau:

import csv
3

Trong một số file CSV có chứa header như sau:

Sau khi mở file dưới dạng txt, kết quả như sau:

import csv
4

Bạn có thể thấy dòng header trong file sẽ bắt đầu bởi một dấu phẩy

import csv

with open('./user/user.csv') as f:
reader = csv.reader(f)
for row in reader:
print(row)






0. Cách đọc file csv dạng này trong python cũng không có gì thay đổi đặc biệt cả, giống như ở phần trên chúng ta viết:

import csv
5

Điểm khác biệt duy nhất trong kết quả là một ký tự trống

with open('data/src/sample.csv') as f:
reader = csv.reader(f)
l = [row for row in reader]

print(l)

0 sẽ được thêm vào phần đầu kết quả mà thôi.

Đọc file CSV dưới dạng dictionary trong python | csv.DictReader

Đọc file csv và lưu kết quả dưới dạng dictionary

Ở phần trên chúng ta đã học cách đọc file CSV dưới dạng list bằng hàm csv.reader() rồi.Ngoài cách trên, chúng ta còn có thể đọc file CSV dưới dạng dictionary trong python bằng class csv.DictReader với cách viết như sau:
Ngoài cách trên, chúng ta còn có thể đọc file CSV dưới dạng dictionary trong python bằng class csv.DictReader với cách viết như sau:

import csv
6

Ví dụ, chúng ta có file csv với nội dung sau đây:

with open('./user/user.csv') as f:
print(f.read())





Khi đọc file CSV trong python bằng class csv.DictReader, về mặc định thì các giá trị trong hàng đầu tiên của file sẽ trở thành key của dictionary.

import csv
8

Kết quả, một dictionary được trả về.

import csv
9

Sau đó, bằng cách Chỉ định khóa và lấy giá trị trong dictionary python, chúng ta có thể lấy giá trị của các hàng, cột và cell theo ý muốn như sau:

import csv

with open('./user/user.csv') as f:
reader = csv.reader(f)
0

Trong trường hợp file CSV không có hàng header, hoặc chúng ta muốn dùng giá trị key khác, hãy chỉ định đối số

with open('data/src/sample.csv') as f:
reader = csv.reader(f)
l = [row for row in reader]

print(l)

1 khi đọc file csv bằng class csv.DictReader như sau:

import csv

with open('./user/user.csv') as f:
reader = csv.reader(f)
1

Kết quả:

import csv

with open('./user/user.csv') as f:
reader = csv.reader(f)
2

Trong trường hợp file CSV có chứa header, ví dụ :

Sau khi mở file dưới dạng txt, kết quả như sau:

import csv
4

Bạn có thể thấy dòng header trong file sẽ bắt đầu bởi một dấu phẩy

import csv

with open('./user/user.csv') as f:
reader = csv.reader(f)
for row in reader:
print(row)






0. Cách đọc file csv dạng này trong python cũng không có gì thay đổi đặc biệt cả, giống như ở phần trên chúng ta viết:

import csv

with open('./user/user.csv') as f:
reader = csv.reader(f)
4

Kết quả:

import csv

with open('./user/user.csv') as f:
reader = csv.reader(f)
5

Trong trường hợp file CSV có chứa header, ví dụ :

import csv

with open('./user/user.csv') as f:
reader = csv.reader(f)
6

Kết quả:

import csv

with open('./user/user.csv') as f:
reader = csv.reader(f)
7

Trong trường hợp file CSV có chứa header, ví dụ :

Khi chúng ta mở file CSV này bằng class csv.DictReader, ký tự trắng

with open('data/src/sample.csv') as f:
reader = csv.reader(f)
l = [row for row in reader]

print(l)

2 sẽ trở thành một key trong kết quả như sau:đọc file csv trong python rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Để xóa đi ký tự trắng này trong kết quả, hãy sử dụng kèm lệnh Xóa phần tử trong dictionary python như sau:

Tổng kết và thực hành

Trên đây Kiyoshi đã hướng dẫn bạn về cách đọc file csv trong python rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.>> python cơ bản - lập trình python cho người mới bắt đầu>>17. csv excel json xml pdf

Và hãy cùng tìm hiểu những kiến thức sâu hơn về python trong các bài học tiếp theo.

Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!

HOME>> python cơ bản - lập trình python cho người mới bắt đầu>>17. csv excel json xml pdf

Bài sau