Seite 1 von 1
List Ausgabe Filtern
Verfasst: Donnerstag 7. Oktober 2010, 10:05
von Temoc
Moin,
ich möchte gerne bestimmte Zeichen, aus einer List herausfiltern um diese in einer Schleife als interger weiterzuverwenden.
Code: Alles auswählen
servers = ['s/1 -t:tcp -h 127.0.0.1 -p 6502',' s/2 -t:tcp -h 127.0.0.1 -p 6502']
Aus dieser List, möchte ich gerne "1" und "2" herausbekommen(direkt nach dem "/" Zeichen), es kann auch mal sein dass dort ein höherer Wert steht zb "12" oder "123"... Habe es schon mit .join probiert, aber dies funktionierte nicht wie .split, da es bereits ein List-Variable ist. Daher bitte ich hier um Hilfe für mein Problem.
Re: List Ausgabe Filtern
Verfasst: Donnerstag 7. Oktober 2010, 10:10
von Hyperion
Wie wärs mit dem re-Modul?
Re: List Ausgabe Filtern
Verfasst: Donnerstag 7. Oktober 2010, 10:10
von Rebecca
Code: Alles auswählen
>>> servers = [s/1 -t:tcp -h 127.0.0.1 -p 6502, s/2 -t:tcp -h 127.0.0.1 -p 6502]
File "<stdin>", line 1
servers = [s/1 -t:tcp -h 127.0.0.1 -p 6502, s/2 -t:tcp -h 127.0.0.1 -p 6502]
^
SyntaxError: invalid syntax
Wenn es sich hier um eine Liste von Strings handelt, mussd du halt ueber die Liste laufen und split auf jedes Item anwenden.
Re: List Ausgabe Filtern
Verfasst: Donnerstag 7. Oktober 2010, 10:16
von Temoc
Hi,
also ich bekomme diese List von einem anderen Modul so ausgeben. Hier der Code:
Code: Alles auswählen
>>> m.getAllServers()
[s/1 -t:tcp -h 127.0.0.1 -p 6502, s/2 -t:tcp -h 127.0.0.1 -p 6502]
>>> servers = m.getAllServers()
>>> print servers
[s/1 -t:tcp -h 127.0.0.1 -p 6502, s/2 -t:tcp -h 127.0.0.1 -p 6502]
re-Modul, Reguläre Ausdrücke beherrsche ich leider überhaupt nicht. Weder in Python, noch in einer anderen Programmiersprache...
Re: List Ausgabe Filtern
Verfasst: Donnerstag 7. Oktober 2010, 10:29
von Temoc
Konnte es selbst lösen, vielen Dank an Hyperion.
Habe mir das re-modul nochmal genauer angeschaut
Lösung:
Re: List Ausgabe Filtern
Verfasst: Donnerstag 7. Oktober 2010, 11:13
von cofi
Dafuer reicht auch `str.split` und wenn ich die Bedeutung von `x` jetzt nicht falsch rate ist auch das joinen ueberfluessig.
Re: List Ausgabe Filtern
Verfasst: Donnerstag 7. Oktober 2010, 12:17
von Hyperion
Ich hätte mir das jetzt so vorgestellt:
Code: Alles auswählen
In [5]: import re
In [10]: re.search("(?<=/)\d", s).group()
Out[10]: '1'
Oder ohne re:
Code: Alles auswählen
In [1]: s = 's/1 -t:tcp -h 127.0.0.1 -p 6502'
In [2]: s.split()
Out[2]: ['s/1', '-t:tcp', '-h', '127.0.0.1', '-p', '6502']
In [3]: s.split()[0]
Out[3]: 's/1'
In [4]: s.split()[0][2:]
Out[4]: '1'
Re: List Ausgabe Filtern
Verfasst: Donnerstag 7. Oktober 2010, 13:02
von /me
Hyperion hat geschrieben:
Es sollen mehrere Ziffern möglich sein.
Re: List Ausgabe Filtern
Verfasst: Donnerstag 7. Oktober 2010, 17:10
von Hyperion
/me hat geschrieben:
Es sollen mehrere Ziffern möglich sein.
Jo, danke
