Re: [問題] 檔案行列互換
這樣子寫如何:)
(假設記憶體夠大)
版本一:
sub {
for my $i (0..$#{$_[0]}) {
print FHO qq($_[0][$i] @{[map { "$_:$_[$_][$i]" } 1..$#_]}\n);
}
}->(map { chomp; [ split /\s+/ ] } <FHD>);
版本二:
sub {
for ( ; $_[0] =~ /(\d+)\s*/g; print "\n") {
print FHO "$1";
$_[$_] =~ /(\d+(?:\.\d+)?)\s*/g && print FHO " $_:$1" for 1..$#_;
}
}->(<FHD>);
※ 引述《sonymezo (小緣)》之銘言:
: 我有一個檔案train.txt
: 檔案格式如下
: 0 0 0 1 1 1
: 852.98 47.07 38.78 33.68 33.26 28.48
: 98.19 14.53 14.47 14.54 15.08 12.44
: 149.72 170.97 170.44 327.91 43.15 407.72
: 35.13 29.56 35.88 81.15 27.75 50.74
: 41.7 43.22 30.03 76.04 37.33 63.91
: .
: .
: .
: 我希望轉成
: 0 1:852.98 2:98.19 3:149.72
: 0 1:47.07 2:14.53 3:170.97
: 0 1:38.78 2:14.47 3:170.44 . . .
: 1 1:33.68 2:14.54 3:327.91
: 1 1:33.26 2:15.08 3:43.15
: 1 1:28.48 2:12.44 3:407.72
: 並寫入bbb.txt
: 我得程式碼如下
: #!/usr/bin/env perl
: $file = "/home/ed/train.txt";
: $out="/home/ed/bbb.txt";
: open(FHD,"$file") || die "Can't open $file!\n";
: open(FHO,">$out") || die "Can't open $file!\n";
: while ($line=<FHD>) {
: chomp $line;
: $f1 = "$line";
: print FHO "$f1\n";
: }
: close(FHD);
: close(FHO);
: 每一次讀入檔案就是 0 0 0 1 1 1
: 852.98 47.07 38.78 33.68 33.26 28.48
: .
: .
: .
: 請問一下版上大大我需要如何改程式讓他達成我的需求?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.130.207.6
※ 編輯: frank1983 來自: 220.130.207.6 (11/21 04:07)
推
11/21 04:30, , 1F
11/21 04:30, 1F
→
11/21 04:36, , 2F
11/21 04:36, 2F
※ 編輯: frank1983 來自: 220.130.207.6 (11/21 07:54)
※ 編輯: frank1983 來自: 220.130.207.6 (11/21 07:55)
推
11/21 11:02, , 3F
11/21 11:02, 3F
討論串 (同標題文章)
Perl 近期熱門文章
PTT數位生活區 即時熱門文章