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 - 2025 |