String in einer Liste splitten

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
decoder
User
Beiträge: 12
Registriert: Dienstag 6. Oktober 2020, 11:18

Hallo!
Ich habe folgendes Problem: Ich habe eine Liste x = ["hallo"] und möchte diese Liste so aufteilen, dass es eine Liste bleibt aber die Buchstaben aufgeteilt sind, also so: ["h", "a", "l", "l", "o"]

Ich hoffe mir kann da einer helfen!

Danke!
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

Warum?
Du weißt, dass eine Zeichenkette iterierbar ist und sich deshalb weitesgend wie eine Liste verhält?
Benutzeravatar
__blackjack__
User
Beiträge: 14053
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Und warum hat meine eine Liste wo genau ein Element drin ist? Da macht die Liste nicht wirklich Sinn.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
decoder
User
Beiträge: 12
Registriert: Dienstag 6. Oktober 2020, 11:18

sparrow hat geschrieben: Samstag 7. November 2020, 11:26 Warum?
Du weißt, dass eine Zeichenkette iterierbar ist und sich deshalb weitesgend wie eine Liste verhält?


Ok, evtl ist es besser wenn ich mein "tatsächliches Problem" dir erzähle.
ich möchte eine Funktion schreiben, die die Buchstaben aus einem String, der in einer Liste ist, einzeln herauspickt und dann Worte vergleichen kann:

Wort1 = ["hal__"]
Wort2 = ["hallo"]

Wenn ich diese Liste : ["h" ,"a", "l"," _", "_"] habe, kann ich "_" entfernen und gucken ob Wort1 und Wort2 die gleiche Länge haben und die gleichen Buchstaben, oder ein paar gleiche Buchstaben.

ich bin sicher, dass man das irgendwie eleganter lösen kann, jedoch bin ich Anfänger und möchte diese Aufgabe erstmal so lösen, außer jemand gibt mir wirklich gute Tipps wie ich das anders lösen kann. Ich hoffe es ist alles verständlich!

Und ich brauche immernoch nur für die aufteilung Hilfem, den Rest löse ich ;D.

Danke!
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Das beantwortet immer noch nicht die Frage, warum du jetzt zwei Listen mit jeweils einem Element hast.
Was ist bei H_ll_? Soll das auch erkannt werden?
Zum Entfernen von _ benutzt man am Besten auch Stringmethoden.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Strings sind iterierbar. Und zwei oder mehr iterierbare Dinge zur gleichen Zeit laeuft man mit zip ab. Ohne deine unnoetige Liste drumrum kannst du also mit

Code: Alles auswählen

data = "hallo"
pattern = "hal__"

for real, expected in zip(data, pattern):
    print(real, expected)
einen punktweisen Vergleich der beiden Worte machen. Sollte einer der beiden laenger als der andere sein, dann stoppt Python wenn es die kuerzeste Sequenz konsumiert hat. Stattdessen kann man auch itertools.zip_longest benutzen, wenn man das moechte.
Antworten