Seite 1 von 1
String teilen
Verfasst: Mittwoch 18. Mai 2011, 09:09
von huhu002
Hallo!
Habe eine Frage: Wie kann ich in Python einen String, welcher aus 5 mal 5 Ziffern mit einem + als Trennzeichen besteht, teilen? Also z.b. 12345+12345+usw. teilen, dass ich dann eben 5 mal den Wert (12345) habe?
Komme von C, da geht das mehr oder weniger einfach mit strtok()

Re: String teilen
Verfasst: Mittwoch 18. Mai 2011, 09:15
von EyDu
Hallo und willkommen im Forum!
Das ist in Python ein ganzes Stück einfacher als in C:
Code: Alles auswählen
>>> "12+34+56+78+90".split("+")
['12', '34', '56', '78', '90']
Hast du vor, solche Ausdrücke, bzw. komplexere, zu parsen? Dann solltest du die Suchfunktion des Forums benutzen, dort gibt es eine ganze Menge Hinweise dazu.
Sebastian
Re: String teilen
Verfasst: Mittwoch 18. Mai 2011, 09:42
von huhu002
Nein, muss sie nur teilen.
Und wenn ich jetzt die Zahlen nur ausgeben möchte, wenn sie ungleich 0 sind, kann ich die einzelnen Teile dann einfach mit if != 0 ansprechen, oder muss ich zuvor noch was umwandeln?
Re: String teilen
Verfasst: Mittwoch 18. Mai 2011, 09:47
von EyDu
Wenn es sich um Zahlen handelt, dann solltest du die Strings auch in Zahlen umwandeln. Wenn du damit Schwierigkeiten hast, dann solltest du das
Tutorial durcharbeiten.
Re: String teilen
Verfasst: Mittwoch 18. Mai 2011, 09:51
von sparrow
Wenn du die Zahlen aber nicht als "Zahlen" brauchst sondern dir Zeichenketten reichen geht das natürlich auch:
Code: Alles auswählen
>>> a = "12+34+0+56+78+0+90"
>>> for part in a.split("+"):
if part is not "0":
print part
12
34
56
78
90
>>>
Re: String teilen
Verfasst: Mittwoch 18. Mai 2011, 10:05
von BlackJack
@sparrow: Das ist keine gute Idee denn ``is``/``is not`` testet nicht auf Wertegleichheit sondern auf Objektidentität. Und zwei Zeichenketten mit dem gleichen Wert müssen nicht auch das selbe Objekt sein:
Code: Alles auswählen
In [177]: a = "Hallo Welt"
In [178]: b = "Hallo Welt"
In [179]: a is b
Out[179]: False
In [180]: a == b
Out[180]: True
Dein Code funktioniert also nur *zufällig* richtig.
Re: String teilen
Verfasst: Mittwoch 18. Mai 2011, 10:45
von /me
Eingedampft (mit einigermaßen aktuellem Python 2):
Code: Alles auswählen
from __future__ import print_function
map(print, (int(part) for part in '12+3456+000+78+90'.split('+') if int(part)))
Re: String teilen
Verfasst: Mittwoch 18. Mai 2011, 11:05
von EyDu
Wie /me eigentlich eindampfen wollte
Ein `map` mit Nebeneffekte ist auch eher ungewöhnlich und sollte vermieden werden.
Re: String teilen
Verfasst: Mittwoch 18. Mai 2011, 11:22
von /me
EyDu hat geschrieben:Ein `map` mit Nebeneffekte ist auch eher ungewöhnlich und sollte vermieden werden.
Ich hab ja nicht gesagt, dass mein Code schön ist.

Aber sicherheitshalber: Kids, don't do this at home!
Re: String teilen
Verfasst: Mittwoch 18. Mai 2011, 12:09
von huhu002
danke erstmals.
eine Frage hätte ich aber noch: da in meinem String mehrere (teilweise unterschiedliche) Trennzeichen (+ und #) enthalten sind, bräuchte ich sozusagen was, um mehrere Trennzeichen "herauszufiltern".
Re: String teilen
Verfasst: Mittwoch 18. Mai 2011, 12:14
von Hyperion
huhu002 hat geschrieben:danke erstmals.
eine Frage hätte ich aber noch: da in meinem String mehrere (teilweise unterschiedliche) Trennzeichen (+ und #) enthalten sind, bräuchte ich sozusagen was, um mehrere Trennzeichen "herauszufiltern".
Verrate uns doch mal das komplette Szenario. So langsam hat man den Eindruck, dass Du immer mehr "enthüllst" und das im Endeffekt besser auf Regular Expressions hinauslaufen wird.
Also: Wo kommen diese Daten her? Was hast Du damit vor? Welche Fälle können auftreten?
Re: String teilen
Verfasst: Mittwoch 18. Mai 2011, 17:12
von Leonidas
Ja, Hyperion hat recht, der OP sollte mal sagen was er eigentlich will. Scheint nämlich auf ``re.split`` hinauszulaufen...