この記事では、Pythonを用いてクォートやデリミタを指定してCSVファイルを読み書きする方法について詳しく解説します。具体的なコード例、その詳細な解説、および応用例を含めています。
はじめに
CSV(Comma Separated Values)ファイルは、データを簡潔に保存・交換するための広く用いられるフォーマットです。Pythonでは`csv`モジュールを使用して、簡単にCSVファイルを操作することが可能です。しかし、実際のビジネスシーンでは標準のカンマ区切り以外のデリミタや特定のクォート文字を使用する場合も多くあります。このような場合にどのように対応するかを学びましょう。
基本的なCSVの読み書き
基本的なCSVファイルの書き出し
import csv
# CSVファイルを開く
with open('example.csv', 'w', newline='') as csvfile:
csvwriter = csv.writer(csvfile)
# ヘッダーを書き込む
csvwriter.writerow(['Name', 'Age', 'Gender'])
# データを書き込む
csvwriter.writerow(['Alice', 29, 'Female'])
csvwriter.writerow(['Bob', 34, 'Male'])
このコードは、`example.csv`というファイルに`Name`, `Age`, `Gender`というヘッダーと2行のデータを書き込みます。
基本的なCSVファイルの読み込み
import csv
# CSVファイルを開く
with open('example.csv', 'r') as csvfile:
csvreader = csv.reader(csvfile)
# ヘッダーをスキップ
next(csvreader)
# データを読み込む
for row in csvreader:
print(row)
このコードは、`example.csv`からデータを読み込んで表示します。
クォートやデリミタの指定
デリミタの指定
デリミタ(区切り文字)を変更するには、`csv.writer`や`csv.reader`の`delimiter`パラメータに指定します。
import csv
# タブ区切りのCSVを書き出し
with open('example_tab.csv', 'w', newline='') as csvfile:
csvwriter = csv.writer(csvfile, delimiter='\t')
csvwriter.writerow(['Name', 'Age', 'Gender'])
csvwriter.writerow(['Alice', 29, 'Female'])
csvwriter.writerow(['Bob', 34, 'Male'])
クォートの指定
クォート文字を変更する場面も考えられます。その場合、`quotechar`パラメータで指定できます。
import csv
# シングルクォートで囲む
with open('example_quote.csv', 'w', newline='') as csvfile:
csvwriter = csv.writer(csvfile, quotechar="'")
csvwriter.writerow(['Name', 'Age', 'Gender'])
csvwriter.writerow(["Alice's", 29, 'Female'])
csvwriter.writerow(['Bob', 34, 'Male'])
応用例
応用例1: CSVファイルからのデータフィルタリング
特定の条件に一致するデータだけを新しいCSVファイルに保存するケースを考えます。
# 条件に一致するデータをフィルタリング
with open('example.csv', 'r') as read_file, open('filtered.csv', 'w', newline='') as write_file:
csvreader = csv.reader(read_file)
csvwriter = csv.writer(write_file)
headers = next(csvreader)
csvwriter.writerow(headers)
for row in csvreader:
if int(row[1]) > 30: # Ageが30より大きいデータをフィルタ
csvwriter.writerow(row)
応用例2: マルチクォート対応のCSV読み込み
異なるクォート文字が混在するCSVも読み込み可能です。
import re
# マルチクォート対応のCSV読み込み
with open('multi_quotes.csv', 'r
') as f:
for line in f:
row = re.split(',(?=(?:[^\\"\\']*[\\"\\\'][^\\"\\']*[\\"\\\'])*[^\\"\\\']*$)', line.strip())
print(row)
応用例3: 既存のCSVに列を追加
既存のCSVファイルに新たな列を追加するケースも多々あります。
import csv
# 列を追加
with open('example.csv', 'r') as read_file, open('example_added.csv', 'w', newline='') as write_file:
csvreader = csv.reader(read_file)
csvwriter = csv.writer(write_file)
headers = next(csvreader)
headers.append('NewColumn')
csvwriter.writerow(headers)
for row in csvreader:
row.append('NewData')
csvwriter.writerow(row)
まとめ
Pythonでクォートやデリミタを指定してCSVファイルを読み書きする方法を解説しました。特にビジネスの現場では、これらの設定を柔軟に変更できるスキルが求められます。応用例を通じて、さまざまなケースでの応用方法も学びました。この知識を活かして、データ処理作業を効率化してください。
コメント