Python

Python Standard Libary – csv

Xin chào, trong bài viết này chúng ta sẽ tìm hiểu về cách truy xuất dữ liệu ở định dạng csv (Comma Seperated Values) với Python 3.


GHI DỮ LIỆU VÀO FILE DƯỚI ĐỊNH DẠNG CSV

GHI DỮ LIỆU TỪ LIST

Để ghi dữ liệu ở dạng List vào file với định dạng csv, chúng ta sử dụng function csv.writer() và writerow().

Functions:

writerObject = csv.writer(file, delimiter=’,’) – khởi tạo đối tượng Writer

writerObject.writerow(data) – ghi một hàng dữ liệu mới vào file

Trong đó:

  • file – đối tượng file cần ghi dữ liệu;
  • delimiter – mặc định là dấu phẩy, chúng ta có thể đổi thành một ký tự bất kỳ;
  • writerObject – kết quả trả về của function csv.writer(), được sử dụng để ghi dữ liệu vào file dưới định dạng csv;
  • data – dữ liệu cần ghi vào file, ở kiểu list.

Example 1: Ghi dữ liệu từ List

>>> import csv
>>> f = open("result.csv", "w", newline='')
>>> writer = csv.writer(f)
>>> writer.writerow(["Ronaldo", 1985, "Portugal", "Juventus"])
>>> writer.writerow(["Messi", 1987, "Argentina", "Barcelona"])
>>> writer.writerow(["Neymar", 1992, "Brazil", "PSG"])
>>> f.close()

Output:
Mở file result.csv với notepad hoặc Excel, chúng ta sẽ thấy:
Ronaldo,1985,Portugal,Juventus
Messi,1987,Argentina,Barcelona
Neymar,1992,Brazil,PSG

GHI DỮ LIỆU TỪ DICT

Để ghi dữ liệu ở dạng Dict vào file với định dạng csv, chúng ta sử dụng function csv.DictWriter(), writeheader() và writerow().

Functions:

DictWriterObject = csv.DictWriter(file, fieldnames=[field1, field2,…]) – khởi tạo đối tượng DictWriter

DictWriterObject.writeheader() – ghi tên các trường dữ liệu vào đầu file

DictWriterObject.writerow(data) – ghi một hàng dữ liệu mới vào file

Trong đó:

  • file – đối tượng file cần ghi dữ liệu vào;
  • fieldnames – tên các trường dữ liệu, ở dạng một List các String, đây là tham số bắt buộc của function DictWriter();
  • DictWriterObject – kết quả trả về của function csv.DictWriter(), được dùng để ghi dữ liệu vào file dưới định dạng csv;
  • data – dữ liệu ở dạng Dict.

Example 2: Ghi dữ liệu từ Dict

>>> import csv
>>> f = open("result.csv", "w", newline="")
>>> dictWriter = csv.DictWriter(f, fieldnames=["name", "age", "nation", "club"])
>>> dictWrite.writeheader()
>>> dictWrite.writerow({"name":"Ronaldo", "age":33, "nation":"Portugal", "club":"Juventus"})
>>> dictWrite.writerow({"name":"Messi", "age":31, "nation":"Argentina", "club":"Barcelona"})
>>> dictWrite.writerow({"name":"Neymar", "age":26, "nation":"Brazil", "club":"PSG"})

Output:
Mở file result.csv chúng ta sẽ thấy các dòng sau:
name,age,nation,club
Ronaldo,33,Portugal,Juventus
Messi,31,Argentina,Barcelona
Neymer,26,Brazil,PSG


ĐỌC DỮ LIỆU TỪ FILE DƯỚI ĐỊNH DẠNG CSV

ĐỌC DỮ LIỆU VÀO LIST

Để đọc dữ liệu ở định dạng csv vào List, chúng ta sử dụng function csv.reader().

Function:

readerObject = csv.reader(file, delimiter=’,’) – khởi tạo đối tượng Reader

Example 3:

>>> import csv
>>> f = open("result.csv", "r", newline='')
>>> reader = csv.reader(f)
>>> for row in reader:
...    print(row)
...
["Ronaldo", 1985, "Portugal", "Juventus"]
["Messi", 1987, "Argentina", "Barcelona"]
["Neymar", 1992, "Brazil", "PSG"]
>>> f.close()

ĐỌC DỮ LIỆU VÀO DICT

Để đọc dữ liệu ở định dạng csv vào Dict, chúng ta sử dụng function csv.DictReader().

Function:

DictReaderObject = csv.DictReader(file, fieldnames=[field1, field2,…]) – khởi tạo đối tượng DictReader

Trong đó:

  • file – đối tượng file để đọc dữ liệu;
  • fieldnames – tên các trường dữ liệu, ở dạng một List các String, đây là tham số không bắt buộc đối với function DictReader(). Nếu fieldnames bị bỏ qua thì các giá trị của hàng đầu tiên trong file sẽ được sử dụng như là fieldnames để truy xuất dữ liệu từ dict;
  • DictReaderObject – kết quả trả về của function csv.DictReader(), là một iterator, được dùng để đọc dữ liệu từ file dưới định dạng csv.

Example 4:

>>> import csv
>>> f = open("result.csv", "r", newline="")
>>> dictReader = csv.DictReader(f)
>>> for row in dictReader:
...    print(row)
...
OrderedDict([("name", "Ronaldo"), ("age", 33), ("nation", "Portugal"), ("club", "Juventus")])
OrderedDict([("name", "Messi"), ("age", 31), ("nation", "Argentina"), ("club", "Barcelona")])
OrderedDict([("name", "Neymar"), ("age", 26), ("nation", "Brazil"), ("club", "PSG")])

Giải thích:
– Dữ liệu sau khi đọc từ file ra sẽ được lưu ở dạng OrderedDict.


SUMMARY

Như vậy chúng ta đã tìm hiểu về cách truy xuất dữ liệu ở định dạng csv với Python 3. Cảm ơn các bạn đã theo dõi bài viết.

Thân ái và quyết thắng.

Reference:
[1] CSV File Reading and Writing.
[2] Reading and Writing CSV Files in Python.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s