如何在正则表达式中使用包含数字的变量?

2024-06-07 06:00:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我的密码是:

motifSearch = ''
intMin = 15
intMax = 21
intlen = intMax - intMin
SD = "TTGACA"
PBN = "TATAAT"

fastaFile = open('testseq.fsa', 'r')
for line in fastaFile:
    if deviation == 0:
        motSearch = re.search(SD+'([A-Z|a-z]){'+intMin,intMax+'}('+PBN+')', line)
        if motSearch is not None:
            motifSearch = motSearch.group(0)
print(motifSearch)

我必须找到第一个信号是SD,然后跳转{intMin,intMax}个字符,然后找到第二个信号PBN。当我打印出来的时候,我得到:“TypeError:不能隐式地将int对象转换为str”。 我做错什么了


Tags: 密码if信号lineopensdfastafileintlen
1条回答
网友
1楼 · 发布于 2024-06-07 06:00:56

使用字符串格式

regex = '{}([A-Z|a-z]){{},{}}({})'.format(SD, intMin, intMax, PBN)

motSearch = re.search(regex, line)

如果你重用变量或者想要更可读的东西,你也可以这样指定顺序

regex = '{0}([A-Z|a-z]){{1},{2}}({3})'.format(SD, intMin, intMax, PBN)

字符串格式化的另一个例子,用于解决字符串格式化问题(不确定如何绕过使用{}的情况,因为您无法对它们进行转义)

regex = '%s([A-Z|a-z]){%s,%s}(%s)' % (SD, intMin, intMax, PBN)

相关问题 更多 >