当我尝试打印使用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()
答案 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
。