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

看板Perl作者 (新竹)時間15年前 (2009/11/21 04:26), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串3/3 (看更多)
※ 引述《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 : . : . : . : 請問一下版上大大我需要如何改程式讓他達成我的需求? 作法1: 把資料都讀進n x m 陣列中 在印出來 優點:超容易寫 缺點 記憶體吃很大(如果吃得下就用吧) 作法2: 把每一列做split 把第一欄資料寫入到a1檔案 第二寫入到a2檔案 以此類推 最後把a1, a2, ...an 的資料接起來 優點:也很好寫 缺點:io次數多 作法3: 增強做法二 差別是 把第一欄資料寫入到p1陣列第二寫入到p2陣列 以此類推 然後計算陣列存放的的資料數量 每隔一大段資料在寫入硬碟 優點:比較難寫一點點(真的只有一點點) 缺點:同以上作法 ,程式把資料都讀完 最後結果才能出來 作法4~k: 優點:一開始就能看到最後輸出結果 缺點:比較難寫很多 也吃比較多cpu 這台電腦沒灌perl 程式寫法就沒辦法提供了 只能給想法XD 這題目還有很多種作法 如果不計效能的話 就隨便挑一種吧 甚至google上早就有程式了..不需要自己寫 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.232.24.192

11/21 11:13, , 1F
如果用方法二是不是每一個檔案都讀取一個字串來排列
11/21 11:13, 1F

11/21 13:11, , 2F
不用排列 就單純寫檔 最後再把所有檔案組起來而已
11/21 13:11, 2F
文章代碼(AID): #1B1ljXZM (Perl)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
文章代碼(AID): #1B1ljXZM (Perl)