Perl 板


LINE

这是目前我手上的资料内容,因为它的内容很多,而现阶段我只要用到其中两项的资料, 所以试着写个程式去抓取,结果一直没办法达成我想要的目标! 档案部分内容: ID 108_SOLLC Reviewed; 102 AA. AC Q43495; DT 15-JUL-1999, integrated into UniProtKB/Swiss-Prot. DR PIR; S26409; S26409. DR RefSeq; XP_004228450.1; XM_004228402.1. DR EnsemblPlants; Solyc01g009590.2.1; Solyc01g009590.2.1; Solyc01g009590.2. DR GeneID; 544145; -. ID 109_SOLLC Reviewed; 102 AA. AC Q43400; DT 15-JUL-1999, integrated into UniProtKB/Swiss-Prot. DR RefSeq; XP_004228450.1; XM_004228402.1. DR RefSeq; XP_004228451.1; XM_004228403.1. DR UniGene; Les.3896; -. DR KEGG; sly:544145; -. ID 110_SOLLC Reviewed; 102 AA. AC Q43499; DT 15-JUL-1999, integrated into UniProtKB/Swiss-Prot. DR RefSeq; XP_004228450.1; XM_004228402.1. DR RefSeq; XP_004228451.1; XM_004228403.1. DR EnsemblPlants; Solyc01g009999.2.1; Solyc01g009999.2; DR UniGene; Les.3896; -. DR KEGG; sly:544145; -. 这是我试着写的程式码: #!/usr/bin/env -perl -w open my $file, "<", @ARGV; while (<$file>) { if (/^AC/) { $_ =~ /(\w{6})/; print "$1\t" if ($1); } if (/^DR/) { $_ =~ /(Solyc\w+\.\d)/; print "$1\n" if ($1); } } close $uniprot; 上述程式码输出的结果会像这样: Q43495 Solyc01g009590.2 Q43400 Q43999 Solyc01g009999.2 可是我想排出来的样式是: Q43495 Solyc01g009590.2 Q43000 Q43999 Solyc01g009999.2 如果我把加了一个判断式在里面,没有比对到的部分就会变成空白行 :( if (/^DR/) { $_ =~ /(Solyc\w+\.\d)/; print ($1) ? "$1\n" : "\n"; } 请问,我该如何修改它,才能输出成我想要的格式?谢谢 另外想问个问题,我在书上看到能进行多行的比对, 但书上的例子是整个内容一起比, 像上面的例子,可以看出来它是由「ID」开头的一行做为一个段落的起点, 然後接着数目不定的行数, 下一个「ID」才是另一个段落的开始。 我能够只针对两个「ID」之间的内容进行比对吗? 谢谢 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.117.184.134
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Perl/M.1399397472.A.A26.html
1F:推 CindyLinz:print($1 ? "$1\n" : "\n"); 05/07 03:15
2F:→ CindyLinz:然後你後面问的问题, 通常是用两层回圈, 外层把 ID 截出 05/07 03:16
3F:→ CindyLinz:来, 然後内层再处理截出来的内容 05/07 03:16
4F:→ CindyLinz:想耍帅才用一个 regex 搞定配 (?{ CODE }) 吃 XD 05/07 03:17
5F:→ chong:不行耶,因为由 DR 开头的行数不只一行,当它比对不到时, 05/07 09:47
6F:→ chong:就变成输出 \n ,这样一来就有很多空行了,该怎麽让程式 05/07 09:48
7F:→ chong: ^^^^打错 05/07 09:49
8F:→ chong:有没有办法能一次针对 DR 开头的行,一起比对,用"//m" ? 05/07 09:50
9F:→ AntaresStar:如果你不介意最上面多一行空行 可以把\n换到Qxx前面 05/07 12:56
10F:→ chong:Good, 感谢各位! 05/10 17:40
11F:→ hhs66317:如果你不嫌麻烦的话﹐可以加一个$flag﹐通过判断$flag标 06/01 09:44
12F:→ hhs66317:识来决定加\n。 06/01 09:45







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP