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()
String teilen
Hallo und willkommen im Forum!
Das ist in Python ein ganzes Stück einfacher als in C:
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
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']
Sebastian
Das Leben ist wie ein Tennisball.
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
>>>
@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:
Dein Code funktioniert also nur *zufällig* richtig.
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
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)))
Wie /me eigentlich eindampfen wollte
Ein `map` mit Nebeneffekte ist auch eher ungewöhnlich und sollte vermieden werden.
Code: Alles auswählen
filter(bool, map(int, "12+34+56+78+90".split("+")))
Das Leben ist wie ein Tennisball.
Ich hab ja nicht gesagt, dass mein Code schön ist. Aber sicherheitshalber: Kids, don't do this at home!EyDu hat geschrieben:Ein `map` mit Nebeneffekte ist auch eher ungewöhnlich und sollte vermieden werden.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
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.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".
Also: Wo kommen diese Daten her? Was hast Du damit vor? Welche Fälle können auftreten?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert