Python CSV文件的讀寫
1. CSV文件的基本概念
CSV(Comma-Separated Values)是一種常用的數據存儲格式,通常用於表格數據的存儲和交換。每行代表一條記錄,字段之間用逗號分隔。
2. 讀取CSV文件
# 導入csv模組
import csv
# 讀取CSV文件
with open('data.csv', 'r', encoding='utf-8') as file:
reader = csv.reader(file)
for row in reader:
print(row) # 每行都是一個列表
3. 寫入CSV文件
# 寫入CSV文件
data = [
['姓名', '年齡', '城市'],
['小明', 25, '台北'],
['小華', 30, '高雄'],
['小李', 22, '台中']
]
with open('output.csv', 'w', encoding='utf-8', newline='') as file:
writer = csv.writer(file)
writer.writerows(data) # 寫入多行
4. 使用字典讀取和寫入CSV文件
# 使用字典讀取CSV文件
with open('data.csv', 'r', encoding='utf-8') as file:
reader = csv.DictReader(file)
for row in reader:
print(row['姓名'], row['年齡']) # 根據列名訪問數據
# 使用字典寫入CSV文件
fieldnames = ['姓名', '年齡', '城市']
data = [
{'姓名': '小明', '年齡': 25, '城市': '台北'},
{'姓名': '小華', '年齡': 30, '城市': '高雄'},
{'姓名': '小李', '年齡': 22, '城市': '台中'}
]
with open('output_dict.csv', 'w', encoding='utf-8', newline='') as file:
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader() # 寫入表頭
writer.writerows(data) # 寫入多行
5. 實用示例
讀取和處理CSV數據:
# 讀取CSV並計算平均年齡
with open('data.csv', 'r', encoding='utf-8') as file:
reader = csv.DictReader(file)
total_age = 0
count = 0
for row in reader:
total_age += int(row['年齡'])
count += 1
average_age = total_age / count if count > 0 else 0
print(f'平均年齡: {average_age}')
6. 練習題
-
創建一個CSV文件,包含學生的姓名、年齡和成績,然後讀取並顯示這些數據。
-
從CSV文件中讀取數據,計算每個城市的學生平均年齡。
7. 常見錯誤和注意事項
- 確保CSV文件的編碼正確,特別是處理中文時。
- 使用newline=”參數以避免在Windows上出現多餘的空行。
- 注意CSV文件的格式,確保每行的字段數量一致。
8. 最佳實踐
- 使用with語句自動管理文件的開關。
- 對於大型CSV文件,考慮使用生成器逐行處理以節省內存。
- 在寫入CSV文件時,使用表頭以提高可讀性。