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モジュールのライブラリのファイル名と同じらしくエラーが出て動きません。こちらの記事も参考にしてみてください。
コメント