いつも勉強させて頂いているcozeさんの日記を見て僕もやってみました。
コンマ(,)で区切られた文字列のリストが与えられたとき、行と列を入れ替えて表示するプログラムです。
以下のファイルturncsv.pyは、実行時に引数として与えられたcsvファイルを読み込み、縦横変換を行って、ファイル名_turned.csvというファイルを作成する。
turncsv.py
import sys if __name__ == '__main__': filename = sys.argv[1] csvlist = [line[:-1] for line in file(filename).readlines()] newlist = zip(*(s.split(",") for s in csvlist)) #write file savefile = open(filename[:-4] + '_turned.csv', 'w') for xs in newlist: str = ",".join(xs) + '\n' savefile.write(str) savefile.close()
読み込むファイルは以下。
data.csv
COLUMN1,COLUMN2,COLUMN3,COLUMN4,COLUMN5 TOKYO,5000,1,10,100 OSAKA,6000,2,20,100 NAGOYA,7000,3,30,100 SAPPORO,8000,4,40,100 HIROSHIMA,9000,5,50,100 FUKUOKA,10000,6,60,100 KYOTO,11000,7,70,100 AKITA,12000,8,80,100
実行。
C:\Python24>python.exe turncsv.py data.csv
実行結果(data_turned.csv)。
COLUMN1,TOKYO,OSAKA,NAGOYA,SAPPORO,HIROSHIMA,FUKUOKA,KYOTO,AKITA COLUMN2,5000,6000,7000,8000,9000,10000,11000,12000 COLUMN3,1,2,3,4,5,6,7,8 COLUMN4,10,20,30,40,50,60,70,80 COLUMN5,100,100,100,100,100,100,100,100
本当はCSVファイルの扱いにはもっと色々とやることありますが、とりあえずはこんなもんで。