2016-06-09 3 views
0

Ich bin sicher, dass dies eine sehr elementare Frage ist, also vielen Dank im Voraus für Ihre Geduld.Python regulärer Ausdruck: Wie gibt man den Suchwert zurück?

Ich verwende einen einfachen regulären Ausdruck, um zu identifizieren, ob ein Jahr in einer Textzeile vorhanden ist (Zeile ist ein Wörterbuch, also rufe ich das bestimmte Feld an, das ich suchen möchte). Dann möchte ich etwas mit dem Jahr machen. Meine Frage ist, wie kann ich das Jahr, das meine Suche findet, zurückgeben? Alles, was ich online finde, sagt mir, wie man es ersetzt oder bearbeitet, aber in diesem Fall ist der Wert das, was ich extrahieren/benutzen möchte.

p = re.compile('\d{4}') 
if p.search(line['productionStartYear']): 
    # do something with the value the regular expression found 
else: 
    # do something else 
+0

're.match()' und 're.group()'. 're.search()' könnte auch nützlich sein. http://www.tutorialspoint.com/python/python_reg_expressions.htm – Jeremy

Antwort

2

Sie müssen nur die angepassten Objekt in einer Variablen setzen, dann verwenden group() attribute, um den gefundenen String zurück.

p = re.compile('\d{4}') 
matched_obj = p.search(line['productionStartYear']) 
if matched_obj: 
    # do something with the value the regular expression found 
    # print matched_obj.group(0) 
else: 
    # do something else 

match.group([group1, ...])

Returns one or more subgroups of the match. If there is a single argument, the result is a single string; if there are multiple arguments, the result is a tuple with one item per argument. Without arguments, group1 defaults to zero (the whole match is returned). If a groupN argument is zero, the corresponding return value is the entire matching string; if it is in the inclusive range [1..99], it is the string matching the corresponding parenthesized group.

+0

Das macht Sinn, könnten Sie ein Beispiel oder einen Kommentar zur Syntax geben? Ich bekomme diesen Fehler: AttributeError: 'Modul' Objekt hat keine Attribut 'Gruppe', wenn ich versuche, das zu tun, was Sie beschrieben haben. (Scheint nicht, ich kann Code als Kommentar eingeben) –

+0

Genau das habe ich gebraucht. Vielen Dank! –

+0

@TeganLohman sollten Sie die Antwort ankreuzen, um es zu akzeptieren. –