Re: [請益] 文字檔案處理

看板Perl作者 (小a)時間15年前 (2008/10/01 16:27), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
※ 引述《Chris7462 (~烤焦麵包~)》之銘言: : 我有一組資料像下面這樣: : [ X3 X4 Z2 Z3 Z4 ] (Prob: 0 ) : [ X1 X3 X4 Z2 Z3 Z4 ] (Prob: 0 ) : [ X2 X3 X4 Z2 Z3 Z4 ] (Prob: 0 ) : [ X1 X2 X3 X4 Z2 Z3 Z4 ] (Prob: 0 ) : [ X Z1 Z2 Z3 Z4 ] (Prob: 0 ) 這裡有個 X 大括號裡要換成什麼? X_{?} : [ X1 Z1 Z2 Z3 Z4 ] (Prob: 0 ) : [ X2 Z1 Z2 Z3 Z4 ] (Prob: 0 ) : [ X1 X2 Z1 Z2 Z3 Z4 ] (Prob: 0.5499 ) : [ X3 Z1 Z2 Z3 Z4 ] (Prob: 0 ) : [ X1 X3 Z1 Z2 Z3 Z4 ] (Prob: 0 ) : [ X2 X3 Z1 Z2 Z3 Z4 ] (Prob: 0 ) : [ X1 X2 X3 Z1 Z2 Z3 Z4 ] (Prob: 0.0129 ) : [ X4 Z1 Z2 Z3 Z4 ] (Prob: 0 ) : [ X1 X4 Z1 Z2 Z3 Z4 ] (Prob: 0 ) : [ X2 X4 Z1 Z2 Z3 Z4 ] (Prob: 0 ) : [ X1 X2 X4 Z1 Z2 Z3 Z4 ] (Prob: 0.1359 ) : [ X3 X4 Z1 Z2 Z3 Z4 ] (Prob: 0 ) : [ X1 X3 X4 Z1 Z2 Z3 Z4 ] (Prob: 0 ) : [ X2 X3 X4 Z1 Z2 Z3 Z4 ] (Prob: 0 ) : [ X1 X2 X3 X4 Z1 Z2 Z3 Z4 ] (Prob: 0.0026 ) : 我希望能把輸出的結果變成下面這樣: : $X_{1,2},Z_{1,2,3,4}$ & $0.5499$ : $X_{1,2,4},Z_{1,2,3,4}$ & $0.1359$ : $X_{1,2,3},Z_{1,2,3,4}$ & $0.0129$ : $X_{1,2,3,4},Z_{1,2,3,4}$ & $0.0026$ : $X_{3,4},Z_{2,3,4}$ & $0$ : $X_{1,3,4},Z_{2,3,4}$ & $0$ : . : . : . : 就是按照右邊的機率值大小排序後輸出,然後把 X 跟 Z 寫成我上面那樣。 : 希望版上的強者能幫我一下,謝謝謝謝。 #!/usr/bin/perl chomp(@Data = <DATA>); undef @Index; for(@Data) { undef @X; undef @Z; while(s/([XZ])(\d)//) { push(@$1, $2); } $XZ = 'X_{' . join(',', @X) . '},Z_{' . join(',', @Z) . '}'; /Prob: +([^ ]+)/; push(@Index, sprintf("\$%s\$ \$%s\$", $1, $XZ)); } for(sort { $b cmp $a } @Index) { ($b, $a) = split(' ', $_); printf("%-28s & %s\n", $a, $b); } __DATA__ [ X3 X4 Z2 Z3 Z4 ] (Prob: 0 ) [ X1 X3 X4 Z2 Z3 Z4 ] (Prob: 0 ) [ X2 X3 X4 Z2 Z3 Z4 ] (Prob: 0 ) [ X1 X2 X3 X4 Z2 Z3 Z4 ] (Prob: 0 ) [ X Z1 Z2 Z3 Z4 ] (Prob: 0 ) [ X1 Z1 Z2 Z3 Z4 ] (Prob: 0 ) [ X2 Z1 Z2 Z3 Z4 ] (Prob: 0 ) [ X1 X2 Z1 Z2 Z3 Z4 ] (Prob: 0.5499 ) [ X3 Z1 Z2 Z3 Z4 ] (Prob: 0 ) [ X1 X3 Z1 Z2 Z3 Z4 ] (Prob: 0 ) [ X2 X3 Z1 Z2 Z3 Z4 ] (Prob: 0 ) [ X1 X2 X3 Z1 Z2 Z3 Z4 ] (Prob: 0.0129 ) [ X4 Z1 Z2 Z3 Z4 ] (Prob: 0 ) [ X1 X4 Z1 Z2 Z3 Z4 ] (Prob: 0 ) [ X2 X4 Z1 Z2 Z3 Z4 ] (Prob: 0 ) [ X1 X2 X4 Z1 Z2 Z3 Z4 ] (Prob: 0.1359 ) [ X3 X4 Z1 Z2 Z3 Z4 ] (Prob: 0 ) [ X1 X3 X4 Z1 Z2 Z3 Z4 ] (Prob: 0 ) [ X2 X3 X4 Z1 Z2 Z3 Z4 ] (Prob: 0 ) [ X1 X2 X3 X4 Z1 Z2 Z3 Z4 ] (Prob: 0.0026 ) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.232.236.185

10/01 22:26, , 1F
謝謝謝謝。那個是漏打,不要管他 :p
10/01 22:26, 1F
文章代碼(AID): #18upHV5y (Perl)