说我有一串字符,如:
'TTATGACGTTATTCTACTTTGATTGTGCGAGACAATGCTACCTTACCGGTCGGAACTCGATCGGTTGAACTCTATCACGCCTGGTCTTCGAAGTTAGCA'
我想使用像re.findall这样的正则表达式来查找3个条目的任何实例(例如TTA或GTT)。
如何将子字符串传递给用户定义的函数,以便可以实现?
我尝试的是这样的:
def finder(sequence, codons):
Y = re.findall(r'codons',sequence)
return Y
然而,当我尝试在我的字符串上调用此函数时,我使用了一些输入来为像'TTA'这样的密码子,我得到的所有返回都是一个空列表......
我认为列表是空的,因为在我的函数中的正则表达式中,“密码子”在r旁边的引号内。有没有办法以规避这种方式的方式将某些东西传递给正则表达式?
答案 0 :(得分:2)
您正在尝试匹配字符串"codons"
,而不是变量参数。试试这个:
def finder(sequence, codons):
return re.findall(codons, sequence)
答案 1 :(得分:2)
你的问题的完美答案(使用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']