Pythonで複数のcsvファイルを読み込んで処理する

python csv読み込み Python
スポンサーリンク

Pythonでcsvファイル処理

最近、Pythonでcsvファイルを読み込んで内部の情報を抽出しました。参考までにご紹介します。
行ったことは複数のcsvファイルを読み込み、特定の項目のデータをリスト化して出力しました。その際、リストの中は重複データがないようにしました。
Pythonについてはこちらのページを参考にしてください。

PythonでCSVファイルを読み込む

Pythonでcsvファイルを読み込むためには、csvモジュールを読み込めば簡単です。with文でファイルを開いて、csvモジュールに読み込みます。読み込まれたcsvは配列に格納されるのでfor文で順次取り出すことができます。

csvファイルの最初の1行は項目を表していたので、必要な項目の位置を記憶しておき、その後のループで該当の項目を抽出しています。ファイル名はloadcsv.pyとしています。

ファイル名 : loadcsv.py

import sys
import csv

argvs = sys.argv
argc  = len(argvs)

trgnum = 0

def loadcsv(arg,trg) : # 関数宣言
	for filename in arg[1:]: # 複数ファイルを読み込む。ファイルは引数で設定
		with open(filename, 'r') as f: # 順次ファイルを読み込み
			reader = csv.reader(f) # csvモジュールに取り込む
			header = next(reader)  # 1行目をヘッダーとして取り込み

            # ヘッダーを解析して取り込みたい項目の番号を取り込む
   			for colnum, col in enumerate(header): 
				if col.strip()=="Item" :
					trgnum = colnum
			for row in reader:
				trg.add(row[trgnum].strip())

trg=set() # setを使用することで重複データは削除
loadcsv(argvs,trg) # 関数の呼び出し
for lnum, value in enumerate(trg):
	print lnum,":",value

今回使用したcsvファイルの例です。

ID,description,Item,volume
0,toy,doll,2
1,toy,game,4

出力結果は次の通りです。無事読み込めました。

0 : game
1 : doll

実行コマンドの例です。下記の例ではfile1.csvとfile2.csvの2つを読み込んでいます。実際には2つ以上のファイルも読み込み可能です。

python loadcsv.py file1.csv file2.csv

csvモジュールを使用する際の注意点

csvモジュールを使用する際は、ファイル名を”csv.py”にしないでください。csvモジュールのライブラリのファイル名と同じらしくエラーが出て動きません。こちらの記事も参考にしてみてください。

コメント

タイトルとURLをコピーしました