0Pricing
Python Academy · บทเรียน

การเขียน CSV ด้วย csv.DictWriter

เขียนข้อมูลที่มีโครงสร้างลง CSV ด้วย DictReader และ DictWriter

การเขียน CSV ด้วย csv.DictWriter เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

บทนำ

csv.writer และ csv.DictWriter เขียนข้อมูล Python เป็นรูปแบบ CSV พร้อมจัดการเครื่องหมายคำพูดและตัวคั่นโดยอัตโนมัติ

พื้นฐาน csv.writer

csv.writer(f).writerow(row) เขียนแถวเดียว ส่วน writerows(rows) เขียนหลายแถว
import csv, io
buf = io.StringIO()
writer = csv.writer(buf)
writer.writerow(['name', 'age'])
writer.writerow(['Alice', 30])
print(buf.getvalue())

พฤติกรรมการใส่เครื่องหมายคำพูด

โดยค่าเริ่มต้น ฟิลด์ที่มีจุลภาคหรือเครื่องหมายคำพูดจะถูกใส่เครื่องหมายคำพูดโดยอัตโนมัติ quoting=csv.QUOTE_ALL จะใส่เครื่องหมายคำพูดให้ทุกฟิลด์
import csv, io
buf = io.StringIO()
writer = csv.writer(buf, quoting=csv.QUOTE_ALL)
writer.writerow(['Alice', 'NYC, NY', 30])
print(buf.getvalue())

csv.DictWriter

DictWriter เขียนดิกชันนารีเป็นแถว โปรดระบุ fieldnames ส่วน writeheader() จะเขียนส่วนหัวคอลัมน์
import csv, io
buf = io.StringIO()
fields = ['name', 'age']
writer = csv.DictWriter(buf, fieldnames=fields)
writer.writeheader()
writer.writerow({'name': 'Alice', 'age': 30})
print(buf.getvalue())

writerows() สำหรับหลายแถว

writer.writerows(list_of_rows) มีประสิทธิภาพมากกว่าการเรียก writerow() ในลูป
import csv, io
buf = io.StringIO()
writer = csv.DictWriter(buf, fieldnames=['x','y'])
writer.writeheader()
writer.writerows([{'x':1,'y':2},{'x':3,'y':4}])
print(buf.getvalue())

ตัวคั่นแบบกำหนดเอง

csv.writer(f, delimiter='\t') เขียนค่าที่คั่นด้วยแท็บ (TSV)
import csv, io
buf = io.StringIO()
writer = csv.writer(buf, delimiter='\t')
writer.writerow(['a', 'b', 'c'])
print(repr(buf.getvalue()))

พารามิเตอร์ extrasaction

DictWriter(f, fieldnames, extrasaction='ignore') จะละเว้นคีย์ส่วนเกินในดิกชันนารีอย่างเงียบ ๆ แทนที่จะทำให้เกิด ValueError
import csv, io
buf = io.StringIO()
w = csv.DictWriter(buf, fieldnames=['name'], extrasaction='ignore')
w.writeheader()
w.writerow({'name': 'Alice', 'extra': 'ignored'})
print(buf.getvalue())

การเขียนลงไฟล์จริง

with open('out.csv','w',newline='',encoding='utf-8') as f: — ใช้ newline='' และระบุการเข้ารหัสเสมอ
import csv, tempfile, os
tmp = tempfile.mktemp(suffix='.csv')
with open(tmp, 'w', newline='') as f:
    csv.writer(f).writerows([[1,2],[3,4]])
print(open(tmp).read())
os.unlink(tmp)

การเพิ่มข้อมูลลง CSV

open(file, 'a') จะเพิ่มข้อมูลต่อท้าย โปรดระวังอย่าเขียนส่วนหัวซ้ำเมื่อเพิ่มข้อมูล
import csv, io
buf = io.StringIO()
w = csv.writer(buf)
w.writerow(['x', 'y'])
print(buf.getvalue())

การเขียนข้อมูลขนาดใหญ่แบบสตรีม

เขียนทีละแถว — อย่าสะสมทุกแถวไว้ในหน่วยความจำก่อนเขียน
import csv, io
buf = io.StringIO()
writer = csv.writer(buf)
for i in range(5):
    writer.writerow([i, i**2])
print(buf.getvalue())

การทดสอบไปกลับ

เขียนข้อมูลลง CSV แล้วอ่านกลับมาเพื่อตรวจสอบความถูกต้อง
import csv, io
original = [{'name':'Alice','age':'30'},{'name':'Bob','age':'25'}]
buf = io.StringIO()
w = csv.DictWriter(buf, fieldnames=['name','age'])
w.writeheader()
w.writerows(original)
buf.seek(0)
read_back = list(csv.DictReader(buf))
print(read_back == original)

ตรวจสอบอย่างรวดเร็ว

เมธอดใดของ DictWriter ที่เขียนชื่อคอลัมน์เป็นแถวแรก

สรุปทบทวน

csv.writer: writerow/writerows DictWriter: writeheader + writerow/writerows เปิดด้วย newline='' เสมอ ใช้ extrasaction='ignore' สำหรับดิกชันนารีที่ยืดหยุ่น

เดินหน้าต่อ

ทำได้ดีครับ โปรดไปยังบทเรียนถัดไป

คำถามที่พบบ่อย

บทเรียน “การเขียน CSV ด้วย csv.DictWriter” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การเขียน CSV ด้วย csv.DictWriter” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การเขียน CSV ด้วย csv.DictWriter”

เขียนข้อมูลที่มีโครงสร้างลง CSV ด้วย DictReader และ DictWriter คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การเขียน CSV ด้วย csv.DictWriter” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม

ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การเข้ารหัสและถอดรหัส JSON
  2. การจัดการโครงสร้าง JSON ซ้อนกัน
  3. การอ่าน CSV ด้วย csv.reader
  4. การเขียน CSV ด้วย csv.DictWriter
← กลับไปที่ Python Academy