Memoize2

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

Page Top

Index

Bw

Author: 中村 心 Shin Nakamura, Email: sn(at)i.basicwerk.com


© Shin Nakamura/BasicWerk 2008 - 2024