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

วิธีอ่าน CSV File ใน Python

อ่าน CSV File ใน Python

CSV (Comma Separated Values) เป็น Plain Text File ที่คั่นค่าด้วย Comma แทน Tabular Data

รูปแบบ CSV

Sr.No,Name,City,Age
1,Rahul,Kolkata,21
2,Karan,Amritsar,23
3,Priya,Bangalore,20

อ่าน CSV ด้วย Module csv

import csv

with open('ttp.csv', 'r') as file:
    filecontent = csv.reader(file)
    for row in filecontent:
        print(row)

ผลลัพธ์

['Sr.No', 'Name', 'City', 'Age']
['1', 'Rahul', 'Kolkata', '21']
['2', 'Karan', 'Amritsar', '23']
['3', 'Priya', 'Bangalore', '20']

คำอธิบายบรรทัดต่อบรรทัด

  1. import csv - Import Module
  2. open('ttp.csv', 'r') - เปิดไฟล์ Mode Read
  3. csv.reader(file) - สร้าง Reader Object (Iterable)
  4. for row in filecontent - Loop อ่านทีละ Row (แต่ละ Row เป็น List ของ Strings)

⚠️ สำคัญ: CSV และ Python File ต้องอยู่ Folder เดียวกัน

ถ้าอยู่คนละ Folder จะเกิด FileNotFoundError

อ่าน CSV ด้วย Custom Delimiter

ถ้าไฟล์ใช้ Delimiter อื่น (:, ;, |, Tab)

import csv

# Delimiter เป็น :
with open('ttp.csv', 'r') as file:
    filecontent = csv.reader(file, delimiter=':')
    for row in filecontent:
        print(row)

ถ้าไม่ระบุ Delimiter (Default Comma) แต่ไฟล์ใช้ :

['Sr:No:Name:City:Age']
['1:Rahul:Kolkata:21']
['2:Karan:Amritsar:23']
['3:Priya:Bangalore:20']  # ทั้ง Row เป็น 1 Element!

อ่าน CSV เป็น Dictionary (csv.DictReader)

import csv

with open('ttp.csv', 'r') as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(row)
        # {'Sr.No': '1', 'Name': 'Rahul', 'City': 'Kolkata', 'Age': '21'}
        # เข้าถึงได้โดย row['Name'], row['Age'], etc.

เขียน CSV File

import csv

data = [
    ['Sr.No', 'Name', 'City', 'Age'],
    [1, 'Rahul', 'Kolkata', 21],
    [2, 'Karan', 'Amritsar', 23],
    [3, 'Priya', 'Bangalore', 20]
]

with open('output.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    writer.writerows(data)

# หรือ DictWriter
with open('output2.csv', 'w', newline='') as file:
    fieldnames = ['Sr.No', 'Name', 'City', 'Age']
    writer = csv.DictWriter(file, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerow({'Sr.No': 4, 'Name': 'New', 'City': 'City', 'Age': 25})

ใช้ pandas (แนะนำสำหรับ Data Analysis)

import pandas as pd

# อ่าน
df = pd.read_csv('ttp.csv')
print(df)
print(df['Name'].tolist())

# เขียน
df.to_csv('output_pandas.csv', index=False)

Common Issues

  • Encoding: ใช้ open(..., encoding='utf-8') สำหรับภาษาไทย
  • newline='': ป้องกัน Blank Lines ใน Windows
  • Quotechar: จัดการ Comma ใน Field ใช้ quoting=csv.QUOTE_ALL