2017-12-29 5 views
0

sagen, dass ich eine Reihe von Zeichen haben wie:Wie Übergeben eines Parameters an einen regulären Ausdruck innerhalb einer benutzerdefinierten Python-Funktion?

‚TTATGACGTTATTCTACTTTGATTGTGCGAGACAATGCTACCTTACCGGTCGGAACTCGATCGGTTGAACTCTATCACGCCTGGTCTTCGAAGTTAGCA‘

Und ich möchte einen regulären Ausdruck wie re.findall verwenden, um alle Instanzen von 3 Einträge (zB TTA oder GTT zum Beispiel) zu lokalisieren .

Wie kann ich die Unterzeichenfolge an eine benutzerdefinierte Funktion übergeben, so dass dies möglich ist?

Was habe ich versucht, war so etwas wie dieses:

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

Allerdings, wenn ich diese Funktion auf meine Zeichenfolge aufzurufen versuchen, die ich oben mit etwas Eingang für Codons wie ‚TTA‘ gab, alles, was ich bekommen als Rückgabe ist eine leere Liste ...

Ich denke, die Liste ist leer, weil innerhalb des regulären Ausdrucks in meiner Funktion, "Codons" in den Anführungszeichen neben dem r ist. Gibt es eine Möglichkeit, etwas auf eine regelmässige Weise in einer Weise zu übergeben, die dies umgeht?

+2

finden Entfernen Sie die Zitate aus der Umgebung von 'Codons'. Es ist der Name einer Variablen wie 'sequence' –

+1

Warum verwenden Sie überhaupt regex? –

+0

Geben Sie bitte ein Beispiel für die Eingabe an, die Sie für 'sequence' verwenden. –

Antwort

2

Sie versuchen, die Zeichenfolge "codons" anstelle des variablen Parameters abzugleichen. Versuchen Sie folgendes:

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

Eine polierte Antwort auf Ihre Frage (mit 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) 

Ausgang: 3 Spiele werden in der obigen Reihenfolge

['TTA', 'TTA', 'TTA'] 
Verwandte Themen