Seite 1 von 1

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

Verfasst: Montag 31. Oktober 2005, 21:29
von WDZaphod
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!

Verfasst: Montag 31. Oktober 2005, 21:42
von mawe
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

Verfasst: Montag 31. Oktober 2005, 22:38
von WDZaphod
: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

Verfasst: Dienstag 1. November 2005, 01:34
von 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'}