python - 匹配正则表达式(python)

标签 python regex bioinformatics

对于如下序列:

NM_001003443 chr11 + 5925152 5926098 5925152 5926098 2 5925152,5925652, 5925404,5926098,

我想要一个如下所示的信息行(未拼接,意味着 sys.argv 中有一个“-s”):

>NM_00100343|chr11(+):5925152Z5926098

或(拼接,sys.argv 中没有“-s”):

>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 = open(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])

最佳答案

您需要的所有数据都由空格或逗号分隔,因此您根本不需要正则表达式。

mystring = mystring.replace(',', ' ')  # convert all commas to spaces
tokens = mystring.split()  # split at spaces

如果想要坚持使用正则表达式,则存在一些拼写错误。这是正确的正则表达式: p = '(NM_\d+)\s+(chr\d+)\s+([+|-])\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+ )\s+(\d+)\s+(\d+),(\d+),\s+(\d+),(\d+),'

  1. [+-] 不带括号和 |
  2. (chr\d+) 后缺少 \s+
  3. 正则表达式末尾的术语 ,s+( 中缺少 \

关于python - 匹配正则表达式(python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10305063/

相关文章:

java - Android:对字符串中的匹配项进行着色

Java获取正则表达式的匹配组

python - pandas.apply 期望输出形状(传递值的形状是(x,),索引暗示(x,y))

c# - 具有一组字符而不是一个字符的序列对齐算法

Python distutils gcc 路径

Python - 写入 CSV 文件和 for 循环

python - pd.cut 类别为 plt.xticklabels

php - 如何使用 PHP 过滤/删除 Google 电子邮件别名?

python - Python PEP 是公共(public)域吗?

python - 定义计算氨基酸相对频率的函数