ich zahlreiche Werte aus einem ziemlich komplexen String zu erhalten bin versucht, die wie folgt aussieht -Python - Schleife durch Werte in einem String
s = '04/03 23:50:06:242[76:Health]: (mem=188094936/17146904576) Queue Size[=:+:-] : Core[Compiler:0:0:0,HighPriority:0:74:74,Default:6:1872:1874,LowPriority:0:2:2]:Special[Special:0:2:2]:Event[Event:0:0:0]:Comm[CommHigh:0:1134:1152,CommDefault:0:4:4]'
Dies sind die Werte, die ich brauche zu scannen -
list = ['Compiler', 'HighPriority', 'Default', 'LowPriority', 'Special', 'Event', 'CommHigh', 'CommDefault']
Meine Absicht ist es, die 3 Zahlen nach jeder Zeichenfolge so im Beispiel HighPriority
Ich würde [0, 74, 74]
bekommen, die ich dann etwas mit jedem Element tun kann.
Ich habe das unten verwendet, aber es berücksichtigt nicht, wenn das Ende der Zeichenfolge kein Komma ist.
def find_between(s, first, last):
try:
start = s.index(first) + len(first)
end = s.index(last, start)
return s[start:end]
except ValueError:
return ""
for l in list:
print l
print find_between(s, l + ':', ',').split(':')
Ich denke, die beste Methode, dieses Problem zu lösen, zu lernen, ist zu verwenden Modul „re“ des Standard-lib. – mkiever
Ja, mein Re-Fu ist schrecklich. Ich habe versucht, re zu verwenden, aber wenn ich einen Block von Code sehe wie '\ d \ w \ ++ \? \ (\)' Ich friere ein, weil es einfach nicht für mich ist zu lesen :( – whoisearth
Etwas wie 'r = re .search ('Compiler: ([0-9] +): ([0-9] +): ([0-9] +)', s) 'sollten Sie beginnen. Verwenden Sie' r.groups() ' um die drei Teilstrings zu erhalten, die die Zahlen enthalten – mkiever