| 24小時(shí)熱門版塊排行榜 |
| 9 | 1/1 | 返回列表 |
| 查看: 1487 | 回復(fù): 8 | |||
xiezhancnu木蟲(chóng) (小有名氣)
|
[求助]
perl程序求大神加以修改~~
|
|
現(xiàn)在有個(gè)文件夾TOTAL,該文件夾內(nèi)有兩個(gè)文件分別是a.txt和b.txt(見(jiàn)附件),我現(xiàn)在想生成這樣的結(jié)果: a.txt b.txt(這一行可沒(méi)有) Os02t0249600-01 6236.420821 19861.20539 Os02t0242600-01 6550.062 Os03t0427300-01 7423.620595 26454.94742 Os01t0762500-00 5592.607026 31007.32272 第二行空格的意思是因?yàn)镺s02t0242600-01在文件a.txt內(nèi)沒(méi)有對(duì)應(yīng)的相,所以就空著!我現(xiàn)在寫(xiě)了一個(gè)程序,如下: @gbk = glob('TOTAL/*'); for($n=0;$n<=@gbk;$n++){ open(input,"$gbk[$n]" ; while(my $line={ my @tmp=split("\t",$line); my $key = $tmp[0]; my $value = $tmp[4]; if (exists $hash{$key}){ $hash{$key} = $hash{$key}."\t".$value; }else{ $hash{$key} = $value; } } } delete $hash{GeneID}; while(my($key,$value)=each %hash){ print "$key\t$value\n"; } 生成的結(jié)果是這樣的: Os02t0249600-01 6236.420821 19861.20539 Os02t0242600-01 6550.062 Os03t0427300-01 7423.620595 26454.94742 Os01t0762500-00 5592.607026 31007.32272 也就是無(wú)法生成空格,第二行的6550.062應(yīng)該在19861.20539這一列,請(qǐng)大神在我的 程序的基礎(chǔ)上加以修改或者另寫(xiě)程序以實(shí)現(xiàn)我想要的結(jié)果,謝謝了~~~ |
至尊木蟲(chóng) (著名寫(xiě)手)
|
use strict; #use Data: umper;opendir DIR, "total"; my @files = readdir DIR; closedir DIR; my %hash; #store all data into a big hash foreach my $file(@files){ next unless ($file=~/\.txt$/);#only deal with text file &dealOneFile($file); } #print Dumper(%hash); #find the union set of all keys from all files my %key; my @doneFiles = keys %hash; @doneFiles = sort {$a cmp $b} @doneFiles;#sort the file namess foreach my $tmp(@doneFiles){ my %oneFile = %{$hash{$tmp}}; # print Dumper(%oneFile); foreach (keys %oneFile){ $key{$_}++ } } #print Dumper(%key); #print header $"="\t"; print "file\t@doneFiles\n"; #print content foreach my $key(keys %key){ print "$key"; foreach my $file(@doneFiles){ print "\t"; print "$hash{$file}{$key}" if (exists $hash{$file}{$key}); } print "\n"; } sub dealOneFile{ my $filename = "$_[0]"; open IN,"total/$filename"; while(my $line= chomp($line); my ($key,$a,$b,$c,$value) = split("\t",$line); $hash{$_[0]}{$key}=$value; } } |
木蟲(chóng) (小有名氣)
|
有以個(gè)問(wèn)題要問(wèn)你? 你在處理這個(gè)事,最終是不是只有這兩文件? 如果是,解決辦法如下, while(my $line={ my @tmp=split("\t",$line); my $key = $tmp[0]; my $value = $tmp[4]; if (exists $hash{$key}){ $hash{$key} = $hash{$key}."\t".$value; }else{ $hash{$key} = “". "\t" .$value; ####或者寫(xiě)成 “$hash{$key} = “-". "\t" .$value”,用“-”表示缺失數(shù)據(jù) } |

木蟲(chóng) (小有名氣)
|
如果超過(guò)3個(gè)文件,解決方法如下, @gbk = glob('TOTAL/*'); my $hash; ##### 構(gòu)建一個(gè)hash變量 for($n=0;$n<=@gbk;$n++){ open(input,"$gbk[$n]"; while(my $line={ my @tmp=split("\t",$line); my $key = $tmp[0]; my $value = $tmp[4]; next if($key eq "GeneID" ; #### 不記錄“GeneID”這一行$hash->{$key}{$n} = $value; #### 每一個(gè)文件一個(gè)值 } } my $fileNum=$#gbk; foreach my $key (keys %{$hash}){ print "$key"; foreach my $i (0..$fileNum){ if(exists $hash->{$key}{$i}){ print "\t$$hash->{$key}{$i}"; }else{ print "\t"; } } print "\n"; } |

木蟲(chóng) (小有名氣)
木蟲(chóng) (小有名氣)
|
我寫(xiě)了一個(gè)完整的perl腳本,具體見(jiàn)“parseFile.pl”(http://good.gd/2155638.htm),測(cè)試的結(jié)果見(jiàn)“結(jié)果.bmp”(http://good.gd/2155640.htm) "第二行空格的意思是因?yàn)镺s02t0242600-01在文件a.txt內(nèi)沒(méi)有對(duì)應(yīng)的相",你說(shuō)a文件中沒(méi)有“Os02t0242600-01”這行,但是,其實(shí)是有的,見(jiàn)圖“文件a.bmp”(http://good.gd/2155643.htm)。 |

至尊木蟲(chóng) (著名寫(xiě)手)
木蟲(chóng) (小有名氣)
木蟲(chóng) (小有名氣)
送鮮花一朵 |
你好,呵呵,我之前把文件弄錯(cuò)了,呵呵,a文件,b文件的名字弄顛倒了,呵呵,另外a、b文件只是測(cè)試文件,總共有七個(gè)文件的,呵呵,我還沒(méi)測(cè)試一下您的程序是否能跑通,送您鮮花一朵吧,呵呵,這樣的話生成結(jié)果是這樣的: Os02t0249600-01 6236.420821 19861.20539 Os02t0242600-01 6550.062 Os03t0427300-01 7423.620595 26454.94742 Os01t0762500-00 5592.607026 31007.32272 這樣也許您就不覺(jué)得奇怪了吧! |
| 9 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 265求調(diào)劑 +10 | 梁梁校校 2026-03-17 | 10/500 |
|
|---|---|---|---|---|
|
[考研] 化學(xué)308分求調(diào)劑 +3 | 你好明天你好 2026-03-23 | 3/150 |
|
|
[考研] 一志愿陜師大生物學(xué)071000,298分,求調(diào)劑 +3 | SYA! 2026-03-23 | 3/150 |
|
|
[考研] 工科材料085601 279求調(diào)劑 +8 | 困于星晨 2026-03-17 | 10/500 |
|
|
[考研] 276求調(diào)劑。有半年電池和半年高分子實(shí)習(xí)經(jīng)歷 +8 | 材料學(xué)257求調(diào)劑 2026-03-23 | 9/450 |
|
|
[考研] 276求調(diào)劑 +3 | YNRYG 2026-03-21 | 4/200 |
|
|
[考研] 293求調(diào)劑 +3 | 濤濤Wjt 2026-03-22 | 5/250 |
|
|
[考研] 石河子大學(xué)(211、雙一流)碩博研究生長(zhǎng)期招生公告 +3 | 李子目 2026-03-22 | 3/150 |
|
|
[考研] 尋找調(diào)劑 +4 | 倔強(qiáng)芒? 2026-03-21 | 4/200 |
|
|
[考研] 311求調(diào)劑 +3 | 26研0 2026-03-20 | 3/150 |
|
|
[考研] 求調(diào)劑 +3 | 13341 2026-03-20 | 3/150 |
|
|
[考研] 299求調(diào)劑 +4 | 某某某某位 2026-03-21 | 4/200 |
|
|
[考研] 268求調(diào)劑 +9 | 簡(jiǎn)單點(diǎn)0 2026-03-17 | 9/450 |
|
|
[考研] 279求調(diào)劑 +5 | 紅衣隱官 2026-03-21 | 5/250 |
|
|
[考研] 求調(diào)劑 +3 | 白QF 2026-03-21 | 3/150 |
|
|
[考研] 083200學(xué)碩321分一志愿暨南大學(xué)求調(diào)劑 +3 | innocenceF 2026-03-17 | 3/150 |
|
|
[考研] 一志愿 西北大學(xué) ,070300化學(xué)學(xué)碩,總分287,雙非一本,求調(diào)劑。 +3 | 晨昏線與星海 2026-03-18 | 3/150 |
|
|
[考研] 0817 化學(xué)工程 299分求調(diào)劑 有科研經(jīng)歷 有二區(qū)文章 +22 | rare12345 2026-03-18 | 22/1100 |
|
|
[考研] 材料考研調(diào)劑 +3 | xwt。 2026-03-19 | 3/150 |
|
|
[考研] 材料工程專碩調(diào)劑 +5 | 204818@lcx 2026-03-17 | 6/300 |
|