Re: [問題] 檔案行列互換
※ 引述《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
討論串 (同標題文章)
Perl 近期熱門文章
PTT數位生活區 即時熱門文章