今回やること
CSVで作った名簿から、指定した名前の人を探します。
検索処理は、一覧データを1件ずつ見て条件に合うものを探す練習です。
完成コード
csv_member_search.py を作ります。
import csv
members = [
["name", "grade", "email"],
["Ada", "2", "ada@example.com"],
["Taro", "1", "taro@example.com"],
["Mina", "3", "mina@example.com"],
]
with open("members.csv", "w", encoding="utf-8", newline="") as file:
writer = csv.writer(file)
writer.writerows(members)
target_name = "Taro"
found_member = None
with open("members.csv", "r", encoding="utf-8") as file:
reader = csv.DictReader(file)
for row in reader:
if row["name"] == target_name:
found_member = row
break
if found_member is None:
print("見つかりませんでした")
else:
print(f"名前: {found_member['name']}")
print(f"学年: {found_member['grade']}")
print(f"メール: {found_member['email']}")
動作確認
python csv_member_search.py
Taro の学年とメールが表示されれば成功です。
コードの考え方
target_nameが探したい名前です- 見つかるまでは
found_member = Noneにします - 見つかったら辞書を保存して
breakで止めます - 最後に見つかったかどうかを判定します
よくあるエラー
| エラー | 原因 | 修正 |
|---|---|---|
KeyError | CSVの見出しが違う | name, grade, email を確認 |
| 見つからない | 大文字小文字が違う | 検索文字を確認 |
| 文字化け | 文字コードが違う | encoding="utf-8" を使う |
練習
target_nameを別の名前に変える- 見つからない名前で試す
- 学年で検索する処理に変える
次のステップ
日付つきの保存に進む場合は Pythonミニ制作:日付つき日記アプリ が次です。