我将其作为我的代码:
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/