匹配正则表达式(python)
对于以下序列: NM_001003443 chr11+5925152 5926098 5925152 5926098 2 5925525925652,59254045926098 我想要一个如下所示的信息行(未许可,意味着sys.argv中有一个'-s'):匹配正则表达式(python),python,regex,bioinformatics,Python,Regex,Bioinformatics,对于以下序列: NM_001003443 chr11+5925152 5926098 5925152 5926098 2 5925525925652,59254045926098 我想要一个如下所示的信息行(未许可,意味着sys.argv中有一个'-s'): >NM_00100343 | chr11(+):5925152Z5926098 或(拼接,系统argv中无“-s”): >NM_00100343 | chr11(+):5925152Z5926098 | 5925151z5925404592
>NM_00100343 | chr11(+):5925152Z5926098
或(拼接,系统argv中无“-s”):
>NM_00100343 | chr11(+):5925152Z5926098 | 5925151z59254045925652z5926098
我尝试过这样做,但一直得到不正确的匹配,有人能看看我的正则表达式,看看它是否看起来和/或匹配正确吗
我写过:
p='(NM\ud+)\s+(chr\d+)\s+([++-])\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)、(\d+)、s+(\d+)、(\d+)、'
并尝试通过以下方式匹配它们(文件中的每一行看起来像上面给出的行示例,由fp=open(infle,'r')打开):
编辑,这看起来正确吗?
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])
所有需要的数据都用空格或逗号分隔,因此根本不需要正则表达式
mystring = mystring.replace(',', ' ') # convert all commas to spaces
tokens = mystring.split() # split at spaces
如果要坚持使用正则表达式,则会出现一些拼写错误。这是正确的正则表达式:
p='(NM\ud+)\s+(chr\d+)\s+([++\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)、(\d+)、s+(\d+)、(\d+)、(\d+),
[+-]
不带参数和|(chr\d+)
,s+(
接近regexp结尾处)中缺少\
如果我在空格处拆分,我如何使其看起来像所需的格式?@codecordsman-它应该是
[+-]
而不是[+-]
,因为它是一个字符类我编辑了我的代码,因为我正在读取文件中的行,所以它的格式是否正确??
mystring = mystring.replace(',', ' ') # convert all commas to spaces
tokens = mystring.split() # split at spaces