g***j 发帖数: 40861 | 1 【 以下文字转载自 Military 讨论区 】
发信人: gshjj (各输己键), 信区: Military
标 题: perl 请教 (转载)
发信站: BBS 未名空间站 (Tue Feb 2 15:33:24 2010, 美东)
发信人: gshjj (各输己键), 信区: CS
标 题: perl 请教
发信站: BBS 未名空间站 (Tue Feb 2 15:32:23 2010, 美东)
是一个作业题
说一个CSV有四列,要求用perl 输出第一列和第四列。第四列或者是一个单词,或者是
两个单词。如果是两个单词,要求输出的时候这两个单词用双引号引起来。
下面是我写的perl
open(in_file,"
while ($line=)
{
($field1,$field2,$field3,$field4)=split',',$line;
if ($field4=~ /.\s./) {print "$field1, x\n";}
else {print "$ | N**********d 发帖数: 9292 | 2 用\转义双引号吧
【在 g***j 的大作中提到】 : 【 以下文字转载自 Military 讨论区 】 : 发信人: gshjj (各输己键), 信区: Military : 标 题: perl 请教 (转载) : 发信站: BBS 未名空间站 (Tue Feb 2 15:33:24 2010, 美东) : 发信人: gshjj (各输己键), 信区: CS : 标 题: perl 请教 : 发信站: BBS 未名空间站 (Tue Feb 2 15:32:23 2010, 美东) : 是一个作业题 : 说一个CSV有四列,要求用perl 输出第一列和第四列。第四列或者是一个单词,或者是 : 两个单词。如果是两个单词,要求输出的时候这两个单词用双引号引起来。
| g***j 发帖数: 40861 | 3 要速度,谢谢啊。
不过还是有点问题啊。
这是我的程序
open(in_file,"
while ($line=)
{($field1,$field2,$field3,$field4)=split',',$line;
if ($field4=~ /.\s./) {print "$field1,"$field4"";}
else {print "$field1,$field4";}
}
close (in_file);
这是我的结果
TTT,Phenylalanine
TTC,Phenylalanine
TTA,Leucine
TTG,Leucine
TCT,Serine
TCC,Serine
TCA,Serine
TCG,Serine
TAT,Tyrosine
TAC,Tyrosine
TAA,Stop
TAG,Stop
TGT,Cysteine
TGC,Cysteine
TGA,Stop
TGG,Tryptophan
CTT,Leucine
CTC,Leucine
CTA,Le
【在 N**********d 的大作中提到】 : 用\转义双引号吧
| N**********d 发帖数: 9292 | 4 空格不要用\s匹配
换行\n\r,\n,\r都是匹配\s的
【在 g***j 的大作中提到】 : 要速度,谢谢啊。 : 不过还是有点问题啊。 : 这是我的程序 : open(in_file,": while ($line=) : {($field1,$field2,$field3,$field4)=split',',$line; : if ($field4=~ /.\s./) {print "$field1,"$field4"";} : else {print "$field1,$field4";} : } : close (in_file);
| g***j 发帖数: 40861 | 5 没懂。
$field4=~ /.\s./ 是为了把 Aspartic Acid 这种两个单词加中间空格的东东从
Alanine 这种一个单词的东东里挑出来。为啥不用 $field4=~ /.\s./ 呢?
【在 N**********d 的大作中提到】 : 空格不要用\s匹配 : 换行\n\r,\n,\r都是匹配\s的
| N**********d 发帖数: 9292 | 6 我不确定。。。。
我稍微懂点reg exp,但是不懂perl没用过
我觉得\s匹配了第四列,第二个单词后面的换行了吧?
必须用perl么?
【在 g***j 的大作中提到】 : 没懂。 : $field4=~ /.\s./ 是为了把 Aspartic Acid 这种两个单词加中间空格的东东从 : Alanine 这种一个单词的东东里挑出来。为啥不用 $field4=~ /.\s./ 呢?
| g***j 发帖数: 40861 | 7 谢谢啊,做出来了
我对编程一点不知道
这只是生物信息学的一道作业
现在我的程序是:
open(in_file,"
while ($line=)
{($field1,$field2,$field3,$field4)=split',',$line;
if ($field4=~ /.\s./) { chomp($field4); {print "$field1,"$field4"\n";}}
else {print "$field1,$field4";}
}
close (in_file);
谢谢!
【在 N**********d 的大作中提到】 : 我不确定。。。。 : 我稍微懂点reg exp,但是不懂perl没用过 : 我觉得\s匹配了第四列,第二个单词后面的换行了吧? : 必须用perl么?
| N**********d 发帖数: 9292 | 8 不客气
【在 g***j 的大作中提到】 : 谢谢啊,做出来了 : 我对编程一点不知道 : 这只是生物信息学的一道作业 : 现在我的程序是: : open(in_file,": while ($line=) : {($field1,$field2,$field3,$field4)=split',',$line; : if ($field4=~ /.\s./) { chomp($field4); {print "$field1,"$field4"\n";}} : else {print "$field1,$field4";} : }
|
|