Hallo,
ich bin neu hier und fange gerade an mich in die tiefen von python Einzuarbeiten.
Bislang habe ich schon einige kleine Scripte erfolgreich geschrieben.
Aktuell stehe ich jedoch vor einem Problem wo ich nicht weiterkomme.
Ich gebe in einem Herstellertool (darf ich leider nicht nennen) eine Befehl zu Abfrage von Werten ein.
Als Ausgabe erhalte ich (im Teil) folgendes:
...
...
MF List:
main
cfgm
AP List:
srvc-1
srvc-2
...
...
Nun muss ich mit den Werten Arbeiten die unter AP List: vorhanden sind.
Leider kann es hier sein dass keine Werte vorhanden sind oder aber x-beliebig viele.
Wie muss ich hier die Ausgabe splitten um nur mit der Inhalten der AP List zu Arbeiten (die Zahl hinter srvc- reicht mir vollkommen aus)
Viele Grüße und schon einmal danke vorab für die Hilfe.
chw80
Problem mit .spli()
Code: Alles auswählen
for line in ausgabe_zeilen:
if line.startswith("srvc"):
number = line.split("-", 1)[1].strip()
Wie kommst du denn an die Daten? Liest du eine Datei ein oder sprichst du eine API an? Ist das ein kontinuierlicher Strom oder startet und endet er?
Was passiert, sollte ein "srvc"-Eintrag vor AP List stehen? Gibt es ein festes Format oder Protokoll?
Im Zweifelsfall gehst du Zeile für Zeile durch, schaust sie dir an und wenn sie mit "srvc" startet, benutzt du split() um am Minus zu trennen.
Was passiert, sollte ein "srvc"-Eintrag vor AP List stehen? Gibt es ein festes Format oder Protokoll?
Im Zweifelsfall gehst du Zeile für Zeile durch, schaust sie dir an und wenn sie mit "srvc" startet, benutzt du split() um am Minus zu trennen.
Das sieht nicht sehr robust aus. Wo ist definiert, dass srvc nicht irgendwo anders im Text vorkommen kann?
Vermeide Abkürzungen. srv sind ja nicht nur die srvc-Teile, sondern alles. `i` sollte man für alles außer ganzen Zahlen nicht benutzen und auch dann nur sehr begrenzt. Dass es `startswith` gibt und das besser ist, als irgendwo in der Zeile zu suchen, wurde Dir schon gesagt. split ist auch nicht dazu gedacht, einen Anfangsteil wegzulöschen.
Das ist auch nicht viel besser, aber da Du nicht verraten willst, was das genau für Daten sind, kann man Dir auch nicht besser helfen.
Vermeide Abkürzungen. srv sind ja nicht nur die srvc-Teile, sondern alles. `i` sollte man für alles außer ganzen Zahlen nicht benutzen und auch dann nur sehr begrenzt. Dass es `startswith` gibt und das besser ist, als irgendwo in der Zeile zu suchen, wurde Dir schon gesagt. split ist auch nicht dazu gedacht, einen Anfangsteil wegzulöschen.
Code: Alles auswählen
lines = wasauchimmer.splitlines()
for line in lines:
if line.startswith('srvc-'):
srcv_number = line[len('srvc-'):]