如何将参数传递给 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']
假设我有这样一串字符:
'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']