CSV & JSON
อ่าน/เขียนสองรูปแบบข้อมูลที่เจอบ่อยที่สุด — CSV (ตาราง) และ JSON (ภาษากลางของ API)
ข้อมูลในโลกจริงมักอยู่ในรูปแบบมาตรฐาน CSV (ไฟล์ตารางจาก Excel) และ JSON (ข้อมูลที่ API ส่งมา) Python มีโมดูลสำเร็จสำหรับทั้งคู่ ไม่ต้อง parse เอง
JSON — ภาษากลางของ API
JSON หน้าตาเหมือน dict/list ของ Python มาก โมดูล json แปลงไปมาได้ง่าย: loads/dumps ทำกับ string, load/dump ทำกับไฟล์
import json
# Python object -> JSON string
data = {"name": "Aph", "age": 25, "skills": ["python", "sql"]}
text = json.dumps(data, ensure_ascii=False, indent=2)
print(text)
# JSON string -> Python object
obj = json.loads(text)
print(obj["name"]) # Aph
# อ่าน/เขียนไฟล์ JSON
with open("data.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=2)
with open("data.json", encoding="utf-8") as f:
loaded = json.load(f)โดยปกติ json.dumps จะแปลงตัวอักษรไทยเป็น \uXXXX ใส่ ensure_ascii=False เพื่อให้เก็บภาษาไทยเป็นตัวอ่านออกได้ และ indent=2 ทำให้จัดรูปสวยอ่านง่าย
CSV — ข้อมูลตาราง
CSV คือไฟล์ตารางคั่นด้วยจุลภาค โมดูล csv อ่านเป็นแถวได้ และ DictReader อ่านแต่ละแถวเป็น dict (ใช้ header เป็น key)
import csv
# อ่านเป็น dict ต่อแถว (header เป็น key)
with open("users.csv", encoding="utf-8") as f:
reader = csv.DictReader(f)
for row in reader:
print(row["name"], row["age"])
# เขียน CSV
rows = [{"name": "Aph", "age": 25}, {"name": "Bee", "age": 30}]
with open("out.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=["name", "age"])
writer.writeheader()
writer.writerows(rows)เลือกใช้อันไหน
| รูปแบบ | เหมาะกับ | เจอที่ไหน |
|---|---|---|
| JSON | ข้อมูลซ้อนชั้น (object/list) | API, config |
| CSV | ข้อมูลตารางแบน ๆ | Excel, export ข้อมูล |
สรุปหัวข้อนี้
- json: loads/dumps (string), load/dump (ไฟล์) — JSON ≈ dict/list
- ใช้ ensure_ascii=False กับภาษาไทย, indent=2 จัดรูป
- csv.DictReader อ่านแต่ละแถวเป็น dict; DictWriter เขียน
- JSON = ข้อมูลซ้อนชั้น/API; CSV = ตารางแบน/Excel
1) แปลง dict เป็น JSON string แล้ว parse กลับ 2) เขียน list of dict ลงไฟล์ JSON พร้อม indent 3) อ่าน CSV ด้วย DictReader แล้วกรองแถวตามเงื่อนไข 4) อ่าน CSV → กรอง → เขียนผลออกเป็น JSON