Pythonミニ制作:CSVの名簿を検索する

入門 | 13分 で読める | 2026.07.13

公式ドキュメント

今回やること

CSVで作った名簿から、指定した名前の人を探します。

検索処理は、一覧データを1件ずつ見て条件に合うものを探す練習です。

CSV名簿の検索は、DictReaderで各行を読み、row["name"]と探したい名前を比較します。CSV入門を終えてから進むと、検索条件へ集中できます。

完成コード

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

次の3行が表示されれば成功です。

名前: Taro
学年: 1
メール: taro@example.com

target_name = "Nobody"へ変えたときに見つかりませんでしたと表示されることも確認します。

コードの考え方

  • target_name が探したい名前です
  • 見つかるまでは found_member = None にします
  • 見つかったら辞書を保存して break で止めます
  • 最後に見つかったかどうかを判定します

よくあるエラー

エラー原因修正
KeyErrorCSVの見出しが違うname, grade, email を確認
見つからない大文字小文字が違う検索文字を確認
文字化け文字コードが違うencoding="utf-8" を使う

前後の空白を無視する仕様なら、比較する両方へstrip()を使います。大小文字まで無視する場合は文字列操作casefold()も確認してください。同じ名前が複数ある場合、現在のコードは最初の1件で止まります。

ファイルが見つからない場合の扱いはtry・exceptの基本で練習できます。

練習

  1. target_name を別の名前に変える
  2. 見つからない名前で試す
  3. 学年で検索する処理に変える

次のステップ

日付つきの保存に進む場合は Pythonミニ制作:日付つき日記アプリ が次です。

全行を集計する処理との違いはCSVの点数表から平均点を出すでも比較できます。

参考リソース

← 一覧に戻る
PR
PR
PR
PR