正则表达式作为python上的列表

时间:2017-04-29 21:11:47

标签: python

当我尝试打印使用re.search方法检索的对象时,我遇到了错误。 这是输出:

  

$ ./io.py

     

虽然我已成功将正则表达式存储在对象列表中,但看起来在将参数传递给re.match()方法时会出现一些错误。

有人能给我一个暗示吗?

提前致谢!

以下是代码:

# -*- coding: utf-8 -*-
import io
import re

# my regular expressions
exprs = [ """r"Gene ID: (.*)\,""", """r"(.*)\[Homo sapiens]""", 
          """r"from:(.*)\s""",  """r"NM_(.*)\.([0-9]+)""" ,     
          """r"NP_(.*)\.([0-9]+)\s""", """r"\,(.*)[^coding]exons""",  
          """r"AA length:(.*)\s""", """r"isoform(.*)\\NP""" ]


# search for expressions vector in genetable
for element in exprs:
    arq = open('massaCHD8.txt', "r")
    resu = re.search(element, arq.read(), re.M|re.I)
    print(resu)
    arq.close()

1 个答案:

答案 0 :(得分:1)

您似乎尝试使用原始字符串,但请将它们用引号括起来。

而不是

"""r"Gene ID: (.*)\,"""

尝试:

r"Gene ID: (.*)\,"

在正则表达式中,*是贪婪的,因此它会匹配所有内容直到最后,。那是你的意图吗?

请注意,\,表示,,因为逗号不是特殊字符。如果您想匹配反斜杠后跟逗号,请使用\\, ,即使在原始字符串正则表达式中。

此外,您为每个正则表达式重新读取整个文件。您应该在循环之前阅读文件内容

with open('massaCHD8.txt', "r") as df:
    arq = df.read()
for element in exprs:
    results = re.search(element, arq)

请注意,搜索只会找到第一个匹配!如果您想查找所有匹配项,请改用re.findall