【perlメモ】CSVファイルを簡単に処理できるCPANモジュールText::CSV_XSはてなブックマーク数

| コメント(0) | トラックバック(0)

text::CSV_XS
Text::CSV_XS

CSVファイルはエクセルなんかでよく使われる形式のテキストファイルですが、基本「,」(カンマ)区切りのテキストファイルです。単純な「,」(カンマ)区切りのファイルだといいのですが、実際にはデータ自体に「,」や「"」を含んでいたりすることもありそういうのを考慮すると実際に自前で処理しようとすると結構大変です。そういう場合に便利なのが「Text::CSV_XS」CPANモジュールです。

下のようなShift JISのCSVファイルがあるとき

text.csv

11111,"あいう,お""え",aaaaa
22222,"aaaaa,aaa""aa",bbbbb
33333,"山田 太郎",ccccc

下のような感じで簡単にCSVファイルを読み込めます。

#!/usr/bin/perl
use strict;
use warnings;
use utf8;
use Encode;
use Text::CSV_XS;

my $csv = Text::CSV_XS->new ({ binary => 1 }) or die "Cannot use CSV: ".Text::CSV->error_diag ();
open my $fh, "<:encoding(cp932)", "test.csv" or die "test.csv: $!";
while (my $row = $csv->getline ($fh)) {
    my $item1 = encode('cp932',$row->[0]);
    my $item2 = encode('cp932',$row->[1]);
    my $item3 = encode('cp932',$row->[2]);
    print "[$item1][$item2][$item3]\n";
}
$csv->eof or $csv->error_diag ();
close $fh;

実行結果
下のような感じで、データに「,」や「"」が含まれるCSVファイルもちゃんと読み込めてます。

>text.pl
[11111][あいう,お"え][aaaaa]
[22222][aaaaa,aaa"aa][bbbbb]
[33333][山田 太郎][ccccc]

>

便利ですね。

トラックバック(0)

ここだよ

トラックバックスパム対策の為この記事にトラックバックを行うにはトラックバック元の記事中にこのページのURL「http://blog.kumacchi.com/2010/12/perlcsvcpantextcsv_xs.html」を含めてください。

コメントする

RSS

rss

ウェブページ

よく読まれている記事

アクセスランキング

 

QRコード

KUMA TYPE QRコード

マイページ

yays

このブログ記事について

このページは、くまっちが2010年12月16日 23:00に書いたブログ記事です。

ひとつ前のブログ記事は「Google 日本語入力が正式版になったようです。」です。

次のブログ記事は「【映画】『心霊写真 呪撮』の感想」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

  • seo
track feed KUMA TYPE フィードメーター - KUMA TYPE あわせて読みたい