2010年9月25日土曜日

CSVファイルから任意の列を抽出

やれば出来るが、以外に思い浮かばないのがCSVファイルから任意の列を取得する方法です。

0001,AAAA,5011,野菜
0002,BBBB,5012,果物
0003,CCCC,5013,お菓子
0004,DDDD,5014,インスタント食品

上記のCSVデータの3列目だけを

5011,5012,5013,5014

と抽出したい場合です。 この場合以下のコードが使えますので参考にして下さい。



  • サンプルコード
    #!/usr/bin/perl

    #CSVファイルの任意の列を配列へ代入する @linesに結果が収納されます

    #以下の変数に抽出したい列を設定します
    my $col_num = 3;

    #列番号は0から始まるためマイナスする。
    $col_num--;

    #ファイルを開く、失敗したら処理を終了する
    open $fh_input, '<','data.csv' or die; #lines にmap関数を使用し、指定された列を順番に収納する my @lines = map { chomp; (split ',',$_)[$col_num]; } <$fh_input>;

    #ファイルハンドルを解放する
    close $fh_input;

    #テスト用出力
    foreach my $line (@lines){
    print $line. "\n";
    }

0 件のコメント:

コメントを投稿