PythonでCSVファイルを操作する際に、行番号と一緒にデータを取得したい場合があります。そのような場合には、enumerate()
関数を使用します。この記事では、Pythonのenumerate()
関数を使用してCSVファイルを操作する方法について説明します。
CSVファイルの読み込みとenumerate
まずは、CSVファイルを読み込む基本的なコードから見ていきましょう。以下のコードは、CSVファイルを開き、その内容を行ごとに読み込んでいます。
import csv
def parseCCDfile():
with open('byCCD.csv', 'r') as f:
reader = csv.reader(f)
for r, row in enumerate(reader):
print(r, row)
このコードでは、enumerate()
関数を使用して、CSVファイルの各行を読み込みながら、その行のインデックス(行番号)も一緒に取得しています。enumerate()
関数は、与えられたシーケンス(この場合はCSVファイルの各行)を順に返すとともに、その要素のインデックスも一緒に返します。
CSVファイルの各列をenumerateする
次に、CSVファイルの各列をenumerateする方法を見ていきましょう。以下のコードは、CSVファイルの各行を読み込み、その行の各列をenumerateしています。
import csv
def parseCCDfile():
with open('byCCD.csv', 'r') as f:
reader = csv.reader(f)
for r, row in enumerate(reader):
for id, d, ccd, cnt in enumerate(row):
print(id, d, ccd, cnt)
しかし、このコードはエラーを引き起こします。なぜなら、enumerate(row)
は一度に1つの値(列の値)とそのインデックスを返すだけで、id, d, ccd, cnt
の4つの変数に値を割り当てることはできないからです。この問題を解決するには、各行を読み込むループ内で列の値を直接割り当てるか、タプルを使用して列の値を割り当てます。
import csv
def parseCCDfile():
with open('byCCD.csv', 'r') as f:
reader = csv.reader(f)
for r, row in enumerate(reader):
id, d, ccd, cnt = row
print(id, d, ccd, cnt)
このように、Pythonのenumerate()
関数を使用すると、CSVファイルの行や列を簡単に操作することができます。特に、行番号や列番号と一緒にデータを取得する必要がある場合には、enumerate()
関数は非常に便利です。