我将其作为我的代码:

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”。
我究竟做错了什么?

最佳答案

使用字符串格式。

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)

关于python - 如何在正则表达式中使用包含数字的变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45520953/

10-12 18:44