電子書籍の厳選無料作品が豊富!

Perlで書いたプログラムでデータファイルを用いるため、Excel→txt形式(タブ区切り)でファイルを保存し、perlでそのテキストファイルのデータをprintしてみると、セルとセルの間に「”」というような記号が入ってしまうことがあります。
これをsplitで省くことはできますでしょうか?その際に用いるメタ記号も教えていただけないでしょうか?各要素を取り出すためにいい方法があれば教えてください。

(1)元のExcelファイル
id 2000 2001 2003
001 A_IN A_IN B_IN
002 B_IN B_IN OUT

(2)テキストファイル(タブ区切りで保存)
id200020012003
001A_INA_INB_IN
002B_INB_INOUT

(3)以下のようなperlプログラムでprint表示させると「"」という記号が入ってしまい、要素ごと(例えばA_IN、OUT)にデータ処理を行うことができません。

「プログラム」
#import txt file
my $errmsg = "can not open $data\n";
my @data0;
open(FID, $data) or die $errmsg;
chomp(@data0 = <FID>);
close FID;

my $number = @data0;

for (my $i=1; $i<$number; $i++)
{
my @a = split(/\r/, $data0$i]);
my @b = split(/\t/, $a[0]);

print @b, "\n"; ←このprintの結果が以下のようになります。
print $b[0], "\n"; ←そのため、タブによるsplitがうまく
print $b[1], "\n";  出来ておらず、これらの値も変
print $b[2], "\n";  なものが出力されてしまいます・・・。
print $b[3], "\n";

}

「結果」
001A_IN"A_IN"B_IN
002B_IN"B_IN"OUT
(「”」が入る位置は何回か試したところ、変わることがありました。)

A 回答 (1件)

タブ区切りの前に、下記の要領で取り除けないでしょうか?



my @a = split(/\r/, $data0$i]);
$a[0] =~ s/\"//g;
my @b = split(/\t/, $a[0]);
    • good
    • 0
この回答へのお礼

ありがとうございます!早速連休明けに試してみます。

お礼日時:2006/11/05 06:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!