2010-12-09 16 views
1

Ich habe eine Zeichenfolge wie folgt:Python Suche nach Wert in String

STAT bytes 0 
STAT curr_items 0 
STAT total_items 0 
STAT evictions 0 
STAT reclaimed 0 
END 

Ich versuche, den Wert von curr_items, zu bekommen, so weit ich habe

out = telnet.read_until("END") 
req = re.search("curr_items", out).group(0).split()[0] 

Welche curr_items zurück , wie bekomme ich den Wert?

Dank

+0

Welchen Wert zu yo erwarten zu bekommen? –

Antwort

6

Sie hinzufügen können einen capture group den Wert auf Ihre regex passend:

>>> int(re.search("curr_items (\d+)", out).group(1)) 
0 
+0

Ist das eine bessere Lösung als die von khachik? – Tom

+1

@Tom, hängt davon ab, was Sie mit "besser" meinen. Meine Antwort benutzt die Regex, um all die Arbeit zu erledigen, also kann ich einen Aufruf von 'split()' und einen Zugriff auf Listenelemente ersparen. @ khachiks Lösung unterstützt Zeilen ohne Wert (da er '*' anstelle von '+' in der Regex verwendet), aber sein Listenzugriff ('.split() [1]') wird in diesem Fall fehlschlagen. Beide Lösungen sind jedoch gute Ansatzpunkte :) –

+0

Besser = Best Practice in Python. Danke für deine ausführliche Antwort – Tom

1

re.search("curr_items [0-9]*", out).group(0).split()[1]

1
try: 
    req = int(re.search("(?<=curr_items)\s*([\d]*)", out).group(0)) 
except: 
    # No value was found. 
    req = defaultValue