โมดูล csv ของ Python ใช้จัดการไฟล์ CSV (Comma-Separated Values) อ่านและเขียนข้อมูลได้ด้วยฟังก์ชัน reader() และ writer()
CSV คืออะไร?
CSV จัดเก็บข้อมูลแบบตาราง คั่นคอลัมน์ด้วยคอมม่า เหมาะสำหรับข้อมูลโครงสร้าง (Structured Data) เช่น สเปรดชีต ฐานข้อมูล ตัวอย่าง suppliers.csv:
Hendersons Creamery, 123 Main Street, Cream Peterson Chocolate, 129 Second Street, Chocolate Sprinkles HW Smith and Co, 17 Boston Avenue, Ice Cream Cones
โมดูล csv ของ Python
เป็น Built-in module ต้อง import ก่อนใช้:
import csv
1. อ่านไฟล์ CSV (Reading)
ใช้ csv.reader(file_object) คืนค่า Iterator ของ List (แต่ละแถว = List ของคอลัมน์)
import csv
with open("suppliers.csv", "r") as f:
contents = csv.reader(f)
for row in contents:
print(row)
ผลลัพธ์:
['Hendersons Creamery', ' 123 Main Street', ' Cream'] ['Peterson Chocolate', ' 129 Second Street', ' Chocolate Sprinkles'] ['HW Smith and Co', ' 17 Boston Avenue', ' Ice Cream Cones']
ดึงคอลัมน์เฉพาะ (เช่น ที่อยู่คอลัมน์ index 1)
for row in contents:
print(row[1])
เก็บข้อมูลทั้งหมดใน List
suppliers = []
with open("suppliers.csv", "r") as f:
contents = csv.reader(f)
for row in contents:
suppliers.append(row)
print(suppliers)
2. เขียนไฟล์ CSV (Writing)
ใช้ csv.writer(file_object) คืนค่า Writer object ใช้เมธอด writerow() เขียนทีละแถว หรือ writerows() เขียนหลายแถวพร้อมกัน
import csv
suppliers = [
['Hendersons Creamery', ' 123 Main Street', ' Cream'],
['Peterson Chocolate', ' 129 Second Street', ' Chocolate Sprinkles']
]
with open("new_suppliers.csv", "w", newline='') as f:
writer = csv.writer(f)
writer.writerows(suppliers)
3. Quoting (การเพิ่มเครื่องหมายคำพูด)
ป้องกันปัญหาเมื่อข้อมูลมีคอมม่าอยู่ภายใน ใช้พารามิเตอร์ quoting ใน csv.writer():
csv.QUOTE_ALL– ใส่เครื่องหมายคำพูดทุกคอลัมน์csv.QUOTE_NONNUMERIC– ใส่เฉพาะคอลัมน์ที่ไม่ใช่ตัวเลขcsv.QUOTE_MINIMAL– ใส่เฉพาะคอลัมน์ที่มีอักขระพิเศษ (ค่าเริ่มต้น)csv.QUOTE_NONE– ไม่ใส่เครื่องหมายคำพูด
writer = csv.writer(f, quoting=csv.QUOTE_ALL)
ผลลัพธ์:
"Hendersons Creamery"," 123 Main Street"," Cream" "Peterson Chocolate"," 129 Second Street"," Chocolate Sprinkles"
สรุป
โมดูล csv ทำให้อ่าน/เขียนไฟล์ CSV ง่ายและมีประสิทธิภาพ รองรับ Quoting เพื่อป้องกันข้อมูลเสียหาย เหมาะสำหรับประมวลผลข้อมูลตารางใน Python