Python | Leerzeichen aus liste entfernen
Hallo, Ich möchte in Python alle leerzeichen aus einer liste entfernen. Es ist nur z.b. so eine Zusammenstellung möglich: Aus ["1", "2", " "] wird ["1", "2"]. Jedes Zeichen belegt einen Index, es ist z.B. ["12"] nicht möglich. Ich bitte um Hilfe
3 Antworten
text = "Hello, World!"
chars = list(c for c in text if not c.isspace())
bzw. wenn man doppelte Zeichen vermeiden möchte:
chars = list(sorted(set(c for c in text if not c.isspace())))
Bei so einer einfachen Aufgabe muss man nicht extra mit filter() hantieren, und kann sich die funktionalen Eigenschaften von Python zunutze machen. :)
kann sich die funktionalen Eigenschaften von Python zunutze machen
Naja, list comprehension zähle ich nicht mehr zu den funktionalen Dingen. Ich verwende dieses Konstrukt zwar sehr gern, aber beim Profilen leuchten solche Zeilen regelmäßig knallrot auf. Die filter-Funktion scheint da effizienter zu sein.
Deine Liste war vorher ein String, somit wäre die replace Funktion in der Lage gewesen, alle Leerzeichen durch nichts zu ersetzen.
print("Hello world !".replace(" ", "")) # Helloworld!
Ebenso kannst du die filter Funktion einsetzen, um unerwünschtes aus der Liste zu entfernen.
print(list(filter(lambda x: x != ' ', ['H', 'e', 'l', 'l', 'o' , ' ', 'w', 'o', 'r', 'l', 'd', ' ', '!']))) # ['H', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd', '!']
(Hinweis: Seit Python3 gibt filter ein Filter-Objekt zurück, daher ist die zusätzliche Konvertierung zur Liste vonnöten)
Habe ich persönlich zwar noch nicht gemacht (zumindest nicht in Python) aber mit regulären ausdrücken müsste das gehen, einfach mal nach googlen. Das hatte ich nur mal kurz gebraucht, deshalb weiß ich nicht mehr so genau wie das ging ;)
Viel Grüße und viel Glück dabei
Wuldorf
leider kenne ich mich mit Python nur grundlegegend aus und mit regulären ausdrücken habe ich mich nicht alzu lang beschäftigt...kleiner Tipp am rande bei solchen recht speziellen Fragen wird man in Foren meist schneller fündig als hier.
Wie sieht den dein Code mit dem regulären ausdrücken aus, vielleicht fällt mir ja irgendwas auf, aber versprechen kann ich nix ^^
ich hab das jetzt gelöst indem ich alle elemente die nicht leer sind, also alle nichtleerzeichtn, in eine neue liste verschoben werden. nicht elegant, funktioniert aber
hab ich shon versucht, hat aber nichts funktioniert wie ich es will