对于这样一个序列:匹配的正则表达式(蟒蛇)
NM_001003443 CHR11 + 5925152 5926098 5925152 5926098 2 5925152,5925652,5925404,5926098,
我想,看起来像下面的信息线(未剪切,这意味着存在一个参数是sys.argv '-S'):
>NM_00100343|chr11(+):5925152Z5926098
或(剪接,没有 '-S' 在sys.argv中):
>NM_00100343|chr11(+):5925152Z5926098|5925151Z5925404,5925652Z5926098
我试图做到这一点,但不断收到不正确的匹配,有人看我的正则表达式,看看它看起来和/或正确匹配?
我已经写:
p值=“(NM_ \ d +)\ S +(CHR \ d +)\ S +([+ | - ])\ S +(\ d +)\ S +(\ d +)\ S + (\ d +)\ s +(\ d +)\ s +(\ d +)\ s +(\ d +),(\ d +),\ s +(\ d +),(\ d +),'
并试图匹配他们通过(该文件中的每一行看起来像上面给出的,由FP打开=打开(INFILE行例子,“R”):
for line in fp:
r = search(p, line)
if '-s' in sys.argv and r:
wp.write('>'+r.group(1)+'|'+r.group(2)+'('+r.group(3)+')'+':'+r.group(4)+'-'+r.group(5))
else:
wp.write('>'+r.group(1)+'|'+r.group(2)+'('+r.group(3)+')'+':'+r.group(4)+'-'+r.group(5)+'|'+r.group(6)+'-'+r.group(11)+','+r.group(9)+'-'+r.group(12))
编辑,这是否显示正确
for line in fp:
line = line.replace(',',' ')
tokens = line.split()
if '-s' in sys.argv and r:
wp.write('>'+tokens[0]+'|'+tokens[1]+'('+tokens[2]+')'+':'+tokens[3]+'-'+tokens[4])
else:
wp.write('>'+tokens[0]+'|'+tokens[1]+'('+tokens[2]+')'+':'+tokens[3]+'-'+tokens[4]+'|'+tokens[5]+'-'+tokens[10]+','+tokens[8]+'-'+tokens[11])
结束时,如果我在空间分割后
\s+
,我怎么使它看起来像期望的格式? – 2012-04-24 20:07:20与正则表达式一样,只需将r.group(1)替换为标记[0]等。 – 2012-04-24 20:08:25
@CodeChordsman - 它应该是[[+ - ]'而不是'[+ | - ]',因为它是一个字符类 – 2012-04-24 20:09:02