Re: [問題]有關資料擷取部分的一個小問題

看板Perl作者 (騙自己)時間16年前 (2008/05/02 18:27), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/5 (看更多)
※ 引述《anysomething (努力一點比在實在!)》之銘言: : 小弟最近在寫資料讀取與輸出的資料擷取部分,有一些問題想問各位高手該如何解決 : 原始檔案內容(Homo.fa) : >ENSP00000332127 pep:novel chromosome:NCBI36:1:245196755:245237946:-1 : gene:ENSG00000197472 transcript:ENST00000328519 以上我記得應該屬於同一行吧? 只是顯示的時候被切成兩行 : MGLLAFRDVALEFSPEEWECLDPAQRSLYRDVMLENYRNLISLGEDSFNMQFLFHSLAMS : KPELIICLEARKEPWNVNTEKTARHSVLSSYLTEDILPEQGLQVSFQKVMLRRYERCCLE : KLRLRNDWEIPCEDVLASPLPSAMILSFLRPPQKQKHVKPTEPIQSKTLQWL : >ENSP00000355458 pep:novel chromosome:NCBI36:1:245328029:245332038:-1 : gene:ENSG00000188295 transcript:ENST00000366502 : DSVAFEDVAVNFTQEEWALLDSSQKNLYREVMQETCRNLASEANGKTRILKITSKNLGKI : .... : 我要的資料是下面這個形式 : >ENSP00000332127 : MGLLAFRDVALEFSPEEWECLDPAQRSLYRDVMLENYRNLISLGEDSFNMQFLFHSLAMS : KPELIICLEARKEPWNVNTEKTARHSVLSSYLTEDILPEQGLQVSFQKVMLRRYERCCLE : KLRLRNDWEIPCEDVLASPLPSAMILSFLRPPQKQKHVKPTEPIQSKTLQWL : 將上面的結果寫進到$openESPN.fas檔案中 : 目前我的程式只能判別到第一行>ENSP00000332127的部分,至於第二行或下一個>的部分 : ,我就不知道該怎麼去寫,因為我要將一個>後面的資料個別輸出,請問要如何去判別讀 : 到下一行,或是讀到下一個>?? : 謝謝!! 我的做法是直接判斷該行是否是 ">"開頭, 不是就直接輸出... : source code如下: : #!/usr/bin/perl : open(IN, "/home/philippe/Homo_peptides/release-49/Homo.fa"); : while(<IN>) : { : chomp; : if($_ =~ /^(>.*?)\s.*?/) : { : $ENSP = $1; : #print"$ENSP", "\n"; : } : if ($_ =~ /^>(.*?)\s.*?/) : { : $openESPN = $1; : open(FILE, ">>/home/philippe/CutPeptide/$openESPN.fas"); : print FILE $ENSP; : close FILE; : } : } : close IN; -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.109.18.173 ※ 編輯: LinusChen 來自: 140.109.18.173 (05/02 18:27)
文章代碼(AID): #186knycP (Perl)
討論串 (同標題文章)
文章代碼(AID): #186knycP (Perl)