如何将参数传递给 Python 用户定义函数内的正则表达式?

How to pass a parameter to a regular expression inside of a Python user-defined function?

假设我有这样一串字符:

'TTATGACGTTATTCTACTTTGATTGTGCGAGACAATGCTACCTTACCGGTCGGAACTCGATCGGTTGAACTCTATCACGCCTGGTCTTCGAAGTTAGCA'

我想使用像 re.findall 这样的正则表达式来定位 3 个条目的任何实例(例如 TTA 或 GTT)。

我怎样才能将子字符串传递给用户定义的函数,这样才可行?

我试过的是这样的:

def finder(sequence, codons):
    Y = re.findall(r'codons',sequence)
    return Y 

但是,当我尝试在我上面给出的字符串上调用此函数时,使用一些密码子输入,如 'TTA',我得到的 return 只是一个空列表...

我认为该列表是空的,因为在我函数的正则表达式中,"codons" 在 r 旁边的引号内。有没有办法以规避这种方式将某些内容传递给正则表达式?

您正在尝试匹配字符串 "codons",而不是变量参数。试试这个:

def finder(sequence, codons):
   return re.findall(codons, sequence)

您问题的完美回答(使用 python 3+):

# codon_search.py
import re

def finder(codon, fullseq):
    matched = re.findall(codon, fullseq)
    print (matched) 

sequence = "TTATGACGTTATTCTACTTTGATTGTGCGAGACAATGCTACCTTACCGGTCGGAAC"
search_str = "TTA"

#call function
finder(search_str, sequence)

输出:将在上述序列中找到 3 个匹配项

['TTA', 'TTA', 'TTA']