String in Variablen zerlegen? (war im falschen Forum...)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
WDZaphod
User
Beiträge: 4
Registriert: Montag 31. Oktober 2005, 17:00
Wohnort: Darmstadt

Hallo Forum!
Hab die Frage zuerst ins falsche Forum gestellt, hier ist es wohl besser aufgehoben:

Ich bekomme über die Serielle Schnittstelle via pyserial einen String, der folgendermaßen aussieht:

T1:20 T2:23 A1:0 A2:30 A3:85 A4:53 K1:0 K2:0

Nun hätte ich gerne, daß der Wert hinter dem ":" in einer Variable mit dem Namen vor dem ":" erscheint. Der String soll also so verwurstet werden:

T1 = 20
T2 = 23 usw.

Alternativ ginge es auch, daß die Werte in ein Array geschoben werden...
Dummerweise ändert sich die Länge des Strings ja, wenn ein Wert über 99 geht.
Irgendwelche Ideen, wie ich das machen könnte? Rolling Eyes

Grüße & vielen Dank!
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi!

Anstatt einzelne Variablen zu generieren, wäre es vielleicht gscheiter das ganze mit einem Dictionary zu machen:

Code: Alles auswählen

>>> s = "T1:20 T2:23 A1:0 A2:30 A3:85 A4:53 K1:0 K2:0"
>>> vars = {}
>>> for i in s.split():
...     k,v = i.split(":")
...     vars[k] = v
...
>>> vars["T2"]
'23'
Gruß, mawe
WDZaphod
User
Beiträge: 4
Registriert: Montag 31. Oktober 2005, 17:00
Wohnort: Darmstadt

:o :o :o

Ich verneige mein Haupt vor solch Kompetenz!

Oder hessisch ausgedrückt:

Boooaaaaah!!! :shock:

SUPER, danke!
Python gefällt mir immer besser, und das Forum hier auch! :D
BlackJack

In einer aktuellen Python-Version (2.4.x) kann man es auch so schreiben:

Code: Alles auswählen

In [25]: s = "T1:20 T2:23 A1:0 A2:30 A3:85 A4:53 K1:0 K2:0"

In [26]: variables = dict(item.split(':') for item in s.split())

In [27]: variables
Out[27]:
{'A1': '0',
 'A2': '30',
 'A3': '85',
 'A4': '53',
 'K1': '0',
 'K2': '0',
 'T1': '20',
 'T2': '23'}
Antworten