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

时间:2017-12-29 04:13:45

标签: python regex bioinformatics

说我有一串字符,如:

'TTATGACGTTATTCTACTTTGATTGTGCGAGACAATGCTACCTTACCGGTCGGAACTCGATCGGTTGAACTCTATCACGCCTGGTCTTCGAAGTTAGCA'

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

如何将子字符串传递给用户定义的函数,以便可以实现?

我尝试的是这样的:

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

然而,当我尝试在我的字符串上调用此函数时,我使用了一些输入来为像'TTA'这样的密码子,我得到的所有返回都是一个空列表......

我认为列表是空的,因为在我的函数中的正则表达式中,“密码子”在r旁边的引号内。有没有办法以规避这种方式的方式将某些东西传递给正则表达式?

2 个答案:

答案 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']