Überprüfen Sie, ob die Zeile die Zeichenfolge VGA
enthält, dann die Zahlen zurück:
if 'VGA' in line:
return line.split('VGA')[1]
wenn "VGA"
sollte Teil des Ergebnisses sein: die Zahlen wollen
if 'VGA' in line:
return "VGA " + line.split('VGA')[1]
und, wenn Sie nur, einzeln:
if 'VGA' in line:
return map(int, line.split('VGA')[1].split('.'))
Update: Lösung für aktualisierte Anforderungen.
die Zeile mit ()
und *
markiert zu finden, könnte ein regulärer Ausdruck besser sein, z.B .:
for line in input_lines:
m = re.match(r'''
^\( # at the beginning of the line look for a (
[A-Z]+ # then a group of upper-case letters, i.e. OUTPUT
\) # followed by a)
\s* # some space
\* # a literal *
\s* # more space
(?P<tag>[A-Z0-9]+) # create a named group (tag) that matches HDMI1, ie. upper case letters or numbers
\s* # more space
(?P<nums>[\d\.]+) # followed by a sequence of numbers and .
$ # before reaching the end of the line
''', line, re.VERBOSE)
if m:
break
else: # note: this else goes with the for-loop
raise ValueError("Couldn't find a match")
# we get here if we hit the break statement
tag = m.groupdict()['tag'] # HDMI1
nums = m.groupdict()['nums'] # 124.124.124
ich meine Frage bearbeitet, ich glaube, Sie es nicht verstehen, aber es ist meine Schuld. Sorry – tmsblgh
Wenn Sie eine Frage zu Stack Overflow stellen, müssen Sie normalerweise (a) die Eingabe bereitstellen - was Sie getan haben, (b) die erwartete Ausgabe und (c) den Code, den Sie versucht haben. Im Moment bin ich unsicher, ob Sie '123.123.123' zurückgeben wollen oder' 124.124.124'? – thebjorn
Ich habe diese zwei Zeilen, diese Zeile ist die Ausgabe eines Systembefehls. Ich muss es analysieren und dann brauche ich die Daten dieser Zeile, was aktiv ist. Die aktive Zeile ist immer mit * und() markiert. Der Ausgang, was ich will, ist dies: "HDM1" oder "124.124.124" – tmsblgh