Seite 1 von 1

Problem mit .spli()

Verfasst: Mittwoch 20. November 2019, 14:09
von chw80
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

Re: Problem mit .spli()

Verfasst: Mittwoch 20. November 2019, 17:13
von __deets__

Code: Alles auswählen

for line in ausgabe_zeilen:
     if line.startswith("srvc"):
         number = line.split("-", 1)[1].strip()

Re: Problem mit .spli()

Verfasst: Mittwoch 20. November 2019, 17:19
von sparrow
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.

Re: Problem mit .spli()

Verfasst: Donnerstag 21. November 2019, 15:00
von chw80
Hall,

danke für die Inspriationen.
Habe die Lösung wie folgt (für mich passend) umgesetzt

srv = ("Befehl")[0].split()
for i in srv:
if "srvc" in i:
srvcnr = i.split("srvc-")[1]

Danke.

Re: Problem mit .spli()

Verfasst: Donnerstag 21. November 2019, 15:56
von Sirius3
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.

Code: Alles auswählen

lines = wasauchimmer.splitlines()
for line in lines:
    if line.startswith('srvc-'):
        srcv_number = line[len('srvc-'):]
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.