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

标签 python regex

我的代码是这样的:

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/

相关文章:

javascript - 在没有带有特定文本标签的 JavaScript 中拆分

regex - perl 中 m/PATTERN/和/PATTERN/之间的差异

python - 将 numpy 数组从一个(2-D)复制到另一个(3-D)

python - 删除和移动 pandas df 中的值

python - python 桌面应用程序的安装程序和更新程序

python - 独特页面的数据框摘要

Javascript 正则表达式检测页面源中的所有电话号码

python - 当我尝试通过单击图像按钮打开文件选择器时发生错误

regex - 如何在 Linux 中使用 grep 搜索包含方括号 ("[ ]") 的文本

python - 关于正则表达式的查询