Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python CSV Module: คู่มืออ่าน-เขียนไฟล์ CSV ขั้นตอนต่อขั้นตอน

โมดูล 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