我的代码是这样的:
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/