【发布时间】:2019-09-25 07:53:20
【问题描述】:
我正在尝试挖掘特定模式的字符串数据库。我想寻找正向和反向的模式。我尝试创建两个捕获组,但是,随着模式变大,反转它并不容易,并且可能会引入错误。我考虑过创建反向序列,但是,我不确定如何将其集成到我的规则列表中:
re.findall(regex, v) or re.findall(regex, v[::-1])
我还想添加更多条件,例如前 10 个字母是否包含某个字母,我怎样才能做到这一点而不会使我的代码混乱?
import re
database={'key', 'MSCPFSPKQPGFGHFREPTTRSSVAKVIERNSGALIVFGGAAACVVAGWKVRGYLTDRQLSQL'}
regex = r'([A-Z]{3}[Y|W|F|I|H][A-Z]P[^YFWHI]{4}[Y|W|F|I|H][A-Z]{3})|([A-Z]{3}[Y|W|F|I|H][^YFWHI]{4}P[A-Z][Y|W|F|I|H][A-Z]{3})'
for k,v in database.items():
rules = [re.findall(regex, v), 1 < len(v) < 200, len(re.findall(r'W',v))<4]
if all(rules):
print(re.findall(regex, v))
print('%s' %k)
print('%s' %v)
print('%s' %len(v))
print('\n')
【问题讨论】:
-
为什么要反转你的字符串?模式已经反转了
-
是的,正如我所说,我不想像这样反转模式,“随着模式变大,反转它并不容易,并且可能会引入错误”,我需要替代方案
标签: regex python-3.x bioinformatics dna-sequence