Python cut コマンドの CSV 版¶
ccut.py #! /usr/bin/env python3 # -*- coding: utf-8 -*- # 標準入力から CSV を読み込み(1列目がヘッダー行である、という前提) # 第一引数で与えられたカンマ区切りの項目名に該当する列だけを CSV で出力する import sys import csv cutCols = sys.argv[1].split(',') cin = csv.reader(sys.stdin) cout = csv.writer(sys.stdout, dialect='unix') # dialect='unix' を指定して改行をLFに isHeader = True cutNums = list() for row in cin : if isHeader : isHeader = False for c in cutCols : for i, col in enumerate(row) : if col == c : cutNums.append(i) # 取り出す列のインデックスを控えておく outRow = list() for i in cutNums : outRow.append(row[i]) cout.writerow(outRow) 実行例 $ cat sample/members.csv id,name,age,likes 100,John,22,Cheese 300,Ash,44,Oil 500,Q,24,CPU $ chmod a+x ccut.py $ <sample/members.csv ccut.py name,likes,age name,likes,age John,Cheese,22 Ash,Oil,44 Q,CPU,24
Last modified: 2016-12-19 | ||
|
||
|
||
© Shin Nakamura/BasicWerk 2008 - 2024 |