Python で CSV ファイルを読み取って解析する方法
組み込みの csv モジュールを使用して、Python で CSV ファイルを読み取り、解析する方法を学びます。リスト、辞書リーダー、カスタム区切り文字としての読み方をマスターします。
概要
CSV (カンマ区切り値) は、表形式のデータセットを保存するための普遍的なファイル形式です。データベースのインポート、スプレッドシートのエクスポート、ログのダウンロードのいずれにおいても、CSV の読み取りは中核となるスキルです。 Python には、パンダのようなサードパーティ ライブラリを必要とせずに CSV ファイルを簡単に解析するための、高度に最適化された専用の組み込み `csv` モジュールが含まれています。
`csv.reader` 関数はファイルを 1 行ずつ読み取って解析し、各行をカンマ区切り文字で分割して文字列のリストを返します。 CSV ファイルにヘッダー行 (列ラベルなど) がある場合、多くの場合、`csv.DictReader` を使用することが推奨されます。各行を自動的に解析して、キーが列ラベルである辞書を作成し、コードをより読みやすくし、列順序の変更に対して堅牢にします。
CSV ファイルを開くときは、`open()` ステートメントで `newline=""` を設定することをお勧めします。これにより、Python による自動改行変換が妨げられ、特定のオペレーティング システムで解析エラーが発生する可能性があります。さらに、特殊文字を処理するには、常に `encoding="utf-8"` を指定してください。
コードと実行の出力
このスクリプトは、サンプル CSV ファイルの作成と、csv.reader と csv.DictReader の両方を使用したそのファイルの読み取りを示します。
import csv
# Writing a sample CSV file
sample_content = [
["name", "role", "salary"],
["Alice", "Developer", "90000"],
["Bob", "Manager", "110000"]
]
with open("employees.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerows(sample_content)
# 1. Reading CSV using csv.reader (List representation)
print("--- Using csv.reader ---")
with open("employees.csv", "r", newline="", encoding="utf-8") as file:
reader = csv.reader(file)
header = next(reader) # Skip header row
print("Header:", header)
for row in reader:
print(f"Employee: {row[0]} | Role: {row[1]}")
# 2. Reading CSV using csv.DictReader (Dictionary representation)
print("\n--- Using csv.DictReader ---")
with open("employees.csv", "r", newline="", encoding="utf-8") as file:
dict_reader = csv.DictReader(file)
for row in dict_reader:
print(f"Name: {row['name']} | Role: {row['role']} | Salary: {row['salary']}")--- Using csv.reader ---
Header: ['name', 'role', 'salary']
Employee: Alice | Role: Developer
Employee: Bob | Role: Manager
--- Using csv.DictReader ---
Name: Alice | Role: Developer | Salary: 90000
Name: Bob | Role: Manager | Salary: 110000段階的な実装
- 組み込みの csv モジュールをスクリプトにインポートします。
- ファイルとして open("employees.csv", "r", newline="", encoding="utf-8") を使用して CSV ファイルを開きます。
- ファイル オブジェクトを csv.reader(file) に渡し、ファイルの行を文字列のリストとして解析します。
- csv.DictReader(file) を使用して、列ヘッダーに対応する辞書マッピングとして行を解析します。
よくある質問
CSV ファイルを開くときに newline="" を設定する必要があるのはなぜですか?
newline="" を設定すると、Python が行末文字を動的に変更することがなくなり、csv モジュールがさまざまなオペレーティング システム間で csv スタイルの改行を正しく解析できるようになります。
カンマの代わりにタブまたはセミコロンを使用する CSV ファイルを解析するにはどうすればよいですか?
カスタム区切り文字をリーダー関数に渡すことができます: csv.reader(file, delimiter="\t") または csv.reader(file, delimiter=";")。
関連トピック
推奨される Python リソース
関連するインタラクティブなチュートリアル、チートシート、コード比較で知識を深めてください。
Python ファイル I/O
Python でファイルを読み書きする方法を学びます。 open()、read()、write()、およびコンテキスト マネージャーをマスターして、リソース リークを発生させずにファイル操作を安全に処理します。
Python ファイル操作のチートシート
Python でファイルを読み書きするためのクイック リファレンス。オープン モード、コンテキスト マネージャー、行ごとの読み取りをマスターします。
Python と JavaScript: どちらのプログラミング言語が最適ですか?
Python と JavaScript の包括的な比較。構文の違い、パフォーマンス、使用例 (バックエンドとフロントエンド)、およびコーディング例を調べます。