Re: [問題] 用陣列處理 資料的行列轉換

看板Perl作者 (What?)時間16年前 (2009/03/27 02:08), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《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
文章代碼(AID): #19oyI0QT (Perl)
文章代碼(AID): #19oyI0QT (Perl)