Re: [問題] 檔案行列互換

看板Perl作者 (What?)時間15年前 (2009/11/21 04:02), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串2/3 (看更多)
這樣子寫如何:) (假設記憶體夠大) 版本一: 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
這樣寫是write only code...新手看不懂也不會改吧
11/21 04:30, 1F

11/21 04:36, , 2F
如果他想要改某個功能的話 那不又要再上來問一次XD
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
文章代碼(AID): #1B1lN1Jg (Perl)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
文章代碼(AID): #1B1lN1Jg (Perl)