Re: [問題] 用陣列處理 資料的行列轉換
※ 引述《toolate (我是87一個)》之銘言:
: 我有一個檔案
: 內容大約像
: I1 I2 I3 I4 ......I100
: +1.1 1.2 1.3 1.4 ...... 5
: +1.11 1.12 1.13 1.145 ...... 9
: +1.05 1.043 1.20 ...... 10
: 我想把他改成
: I1 => 1.1
: I2 => 1.2
: ....
: I100 => 5
: I1 => 1.11
: I2 => 1.12
: .....
: I100 => 9
: I1 =>1.05
: I2 => 1.043
: ...
: I100 =>10
: 我目前的做法是
: 先將整個存取成@outline
: $data = shift @outline;
: @row1 = split (/[,\s]+,$data);
: 這個將I1~I100 先取出來 然後後面的值再分開處理
: $data1 = shift @outline;
: @row2 = split (/[,\s]+,$data1);
: while ($idx) {
: my $output ="@row1[$idx] => @row2[$idx] \n";
: ++$idx; }
: 但到了第三筆資料時 想用變數將 @row2 改為@row{$N} 這樣子就語法出錯了
: 這樣想法有錯嗎 還是有更簡單的方法 來做這種轉換
依照你的想法
應該可以這樣寫
my @vars = split /[,\s]+/, shift @outline;
for my $line (@outline) {
my @vals = map { split /[,\s]+/, substr $_, 1 } $line;
print "$vars[$_] => $vals[$_] \n" for 0 .. $#vals;
print "\n"
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.230.108
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Perl 近期熱門文章
PTT數位生活區 即時熱門文章