所以我有这个序列,我正在尝试使用正则表达式的搜索功能在查询出现之前和之后的区域找到区域。
这就是我所拥有的
sequence = 'abcdefghijklmnopqrstuvwxyz'
query = 'jklmnop'
这就是我想要的结果
before = 'abcdefghi'
after = 'qrstuvwxyz'
我尝试过前一个,它不起作用。我认为这会将它分成3组
sequence = 'abcdefghijklmnopqrstuvwxyz'
query = 'jklmnop'
print re.search('\w+(query)\w+',sequence).group(0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
答案 0 :(得分:1)
在字符串中写query
不会在该字符串中存储query
的值,它只是创建一个字符串'query'的新字符串。
>>> print '\w+(query)\w+'
\w+(query)\w+
您应该使用字符串格式:
>>> sequence = 'abcdefghijklmnopqrstuvwxyz'
>>> query = 'jklmnop'
>>> '(\w+)({})(\w+)'.format(query)
'(\\w+)(jklmnop)(\\w+)'
>>> re.search('(\w+)({})(\w+)'.format(query),sequence).group(1)
'abcdefghi'
>>> re.search('(\w+)({})(\w+)'.format(query),sequence).group(3)
'qrstuvwxyz'
最好将re.split
用于此目的:
>>> strs = 'abcdefghijklmnopqrstuvwxyz'
>>> import re
>>> before, after = re.split('jklmnop',strs)
>>> before
'abcdefghi'
>>> after
'qrstuvwxyz'