Seite 1 von 1
Zeile in einzelne Variablen aufteilen
Verfasst: Donnerstag 30. März 2017, 16:12
von api
Hallo zusammen,
ich habe folgende Zeile:
Code: Alles auswählen
line = "S | -f <dir> | /home/hte4993/tmp/pevtest2 | f1.txt,f2.txt,f3.dat | 12345"
Die einzelnen Abschnitte möchte ich nun in einzelne Variablen packen. Das mache ich bisher so:
Code: Alles auswählen
type, option, directory, file, number = line.split("|")
Was aber noch stört, sind die Leerzeichen, die jetzt die einzelnen Variablen-Inhalte umgeben. Das könnte man ja per
wegbekommen, aber geht das auch eleganter? Eventuell bereits beim Zerlegen?
Gruß
API
Re: Zeile in einzelne Variablen aufteilen
Verfasst: Donnerstag 30. März 2017, 16:36
von Sirius3
@api: mit regulären Ausdrücken:
Code: Alles auswählen
line = "S | -f <dir> | /home/hte4993/tmp/pevtest2 | f1.txt,f2.txt,f3.dat | 12345"
type, option, directory, file, number = re.split('\s*\|\s*', line)
Re: Zeile in einzelne Variablen aufteilen
Verfasst: Donnerstag 30. März 2017, 16:51
von Daikoku
Eine weitere Möglichkeit wäre, vor dem line.split('|') den string schon zu bereinigen.
Code: Alles auswählen
line = ''.join("S | -f <dir> | /home/hte4993/tmp/pevtest2 | f1.txt,f2.txt,f3.dat | 12345".split())
type, option, directory, file, number = line.split("|")
Re: Zeile in einzelne Variablen aufteilen
Verfasst: Donnerstag 30. März 2017, 16:56
von api
@Sirius3: An sich eine gute Möglichkeit - funktioniert auch. Ich habe nur beim Aufschreiben meines Problems einen kleinen Fehler gemacht, der sich allerdings negativ auswirkt.
Der String lautet in Wirklichkeit:
Code: Alles auswählen
line = " S | -f <dir> | /home/hte4993/tmp/pevtest2 | f1.txt,f2.txt,f3.dat | 12345"
Also vor dem ersten Wert (S) sind auch noch Leerzeichen. Und die werden bei deiner Lösung nun nicht weggeputzt.
Re: Zeile in einzelne Variablen aufteilen
Verfasst: Donnerstag 30. März 2017, 17:01
von api
@Daikoku: Das funktioniert so leider nicht. Bei deiner Lösung sind alle Leerzeichen weg - auch die innerhalb der Werte. Zum Beispiel aus "-f <dir>" wird dann "-f<dir>".

Re: Zeile in einzelne Variablen aufteilen
Verfasst: Donnerstag 30. März 2017, 17:09
von Daikoku
@api was mir noch aufgefallen ist. Du überschreibst mit type und file Python builtin Funktionen, also eingebaute Funktionen.
Wenn das gewollt ist fein, wenn nicht, solltest Du Dir andere Namen überlegen.
Re: Zeile in einzelne Variablen aufteilen
Verfasst: Donnerstag 30. März 2017, 17:13
von api
@Daikoku:

Da hast du natürlich Recht !! Das werde ich ändern... Danke für den Hinweis, habe ich überhaupt nicht dran gedacht...
Re: Zeile in einzelne Variablen aufteilen
Verfasst: Donnerstag 30. März 2017, 17:14
von Sirius3
@api: Leerzeichen am Anfang und Ende kann man mit strip beseitigen.
Re: Zeile in einzelne Variablen aufteilen
Verfasst: Donnerstag 30. März 2017, 17:18
von api
@Sirius3: Ich habe jetzt erstmal eine Kombination gewählt - die auch schon recht gut ist und auf jeden Fall funktioniert:
Code: Alles auswählen
type, option, directory, file, remus, reason, release_person = re.split('\s*\|\s*', line.strip())
Re: Zeile in einzelne Variablen aufteilen
Verfasst: Donnerstag 30. März 2017, 17:19
von api
@Sirius3: Sehr gut. Die Lösung gefällt mir. Danke.

Re: Zeile in einzelne Variablen aufteilen
Verfasst: Donnerstag 30. März 2017, 17:32
von snafu
Re: Zeile in einzelne Variablen aufteilen
Verfasst: Donnerstag 30. März 2017, 19:52
von api
@snafu: Auch nicht schlecht. Darauf wäre ich nun gar nicht gekommen, obwohl es doch so naheliegend ist.
Danke auch.