我有文本文件(seq.fasta),其中包含如下序列
M1
MPMILGYWNVRGLTHPIRMLLEYTDSSYDEKRYTMGDAPDFDRSQWLNEKFKLGLDFPNL
PYLIDGSHKITQSNAILRYLARKHHLDGETEEERIRADIVENQVMDTRMQLIMLCYNPDF
EKQKPEFLKTIPEKMKLYSEFLGKRPWFAGDKVTYVDFLAYDILDQYRMFEPKCLDAFPN
LRDFLARFEGLKKISAYMKSSRYIATPIFSKMAHWSNK
我必须提取主题PXXP正好4个字符(XX可以是任何字符)。
我尝试了以下代码:
import re
infile=open("seq.fasta",'r')
out=open("out.csv",'w')
for line in infile:
line = line.strip("\n")
if line.startswith('>'):
name=line
else:
motif = re.compile(r"(\bP{2}P\b)")
c = line.count('motif')
print '%s:%s' %(name,c)
out.write('%s:%s\n' %(name,c))
但它没有找到主题。
答案 0 :(得分:5)
试试这个:
re.compile(r"(P..P)")
.
表示任何角色。
{2}
表示最后一个令牌必须重复两次(在正则表达式中,这意味着PP
。
\b
匹配字边界
答案 1 :(得分:3)
您可以使用:
re.compile( r"(P[\w]{2}P)" )
或
re.compile( r"(P[A-Z]{2}P)" )
Meta \ w - 表示字母数字字符,类似于[A-Z0-9 _]