Seite 1 von 1

String zu Array aufspalten

Verfasst: Donnerstag 24. September 2015, 21:27
von ihPyP
Hallo,

ich möchte eine kurze Frage hier stellen, denn ich habe selbst noch keine Lösung. Mein Ziel ist einen String (value) in ein Feld von Zeichenketten aufzuteilen. Als Trennzeichen suche ich nach einem Komma:

Code: Alles auswählen

value = ' "Argument", "1, 2, 3, 4", "Sache", 12345 ' 
tempData = list()
tempData = value.split(",")
Das ist im Prinzip kein Problem, aber das Suchkriterium würde das zweite Argument "1, 2, 3, 4" in vier einzelne Strings spalten. Das möchte ich aber gerne vermeiden. Wie schaffe ich es also, dass in tempData letztlich folgende Einträge ankommen ['Argument', '1, 2, 3, 4', 'Sache', '12345']???

Danke für die Hilfe im Voraus.

Re: String zu Array aufspalten

Verfasst: Donnerstag 24. September 2015, 21:36
von Sirius3
@ihPyP: tempData ist ein sehr schlechter Name. Versuche besser zu beschreiben, was in der Variable steht. Was denkst Du, bewirkt die zweite Zeile? Woher kommt eigentlich der String?

Code: Alles auswählen

four_values = ast.literal_eval(value.strip())

Re: String zu Array aufspalten

Verfasst: Donnerstag 24. September 2015, 21:53
von ihPyP
Hallo,

"tempData" ist ein Zwischenspeicher bzw. eine Liste, die ich nur zum Aufteilen der Daten verwende.

Die Daten kommen aus einer Steuerdatei und werden vom Benutzer gesetzt. Dies soll möglichst einfach und ohne besondere Maskierungszeichen "\" erfolgen. Also "1, 2, 3, 4" anstelle von "1\, 2\, 3\, 4".

Ich schicke die Eingabe dann wieder in eine andere Datei / Macoro. Ich muss mich somit also an den Syntax dieser Macrosprache halten und kann die Eingaberegeln nicht ändern. Was ich bezwecke ist:
a) Das Komma soll als Trennzeichen dienen, um den gesamten String in mehre Teile aufzuspalten
b) Das Trennzeichen "," soll aber nicht innerhalb von zwei Anführungszeichen gewertet werden.

Re: String zu Array aufspalten

Verfasst: Donnerstag 24. September 2015, 23:43
von BlackJack
@ihPyP: Vielleicht hilft ja das hier:

Code: Alles auswählen

In [8]: import shlex

In [9]: shlex.split(' "Argument", "1, 2, 3, 4", "Sache", 12345 ')
Out[9]: ['Argument,', '1, 2, 3, 4,', 'Sache,', '12345']