python中的正则表达式

时间:2011-09-08 09:48:25

标签: python

我有文本文件(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))

但它没有找到主题。

2 个答案:

答案 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 _]