Sonderzeichen eines strings eliminieren

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
Holgi22
User
Beiträge: 19
Registriert: Mittwoch 3. Februar 2010, 20:39

Abend,

ich habe schon etliche seiten durchforstet aber immernoch nicht das richtige gefunden(oder falsch angewendet :( )

ich möchte einfach alle sonderzeichen die in einem string vorkommen könnten löschen, zb:

a = "Ha---- § l l +++****+++'''### o=="

...lösche sonderzeichen

---> "Hallo"
habs mit replace, re.sub etc verucht aber klappt nicht wirklich :(

gibt es da ein andere Methode?

Gruß
Hi Ha Ho
Holgi22
User
Beiträge: 19
Registriert: Mittwoch 3. Februar 2010, 20:39

ohh das ging schnell, Danke!!! :)
Hi Ha Ho
problembär

Spock hat geschrieben:Die einfachste Logik ist die beste.

Code: Alles auswählen

#!/usr/bin/env python
#-*- coding: iso-8859-1 -*-

a = "Ha---- § l l +++****+++'''### o=="

sond = """- §+*'#="""
for i in sond:
    a = a.replace(i, "")
print a
wenn auch nicht die schnellste.

Gruß
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Ich hab auch was

Code: Alles auswählen

>>> f = lambda x: ''.join(i for i in x if i.isalnum())
>>> f('Ha---- § l l +++****+++""### o==')
'Hallo'
the more they change the more they stay the same
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Dav1d: Deine Funktion eliminiert u.a. Leerzeichen. Unter Sonderzeichen verstehe ich allerdings string.punctuation. Was meint denn der TE dazu?

PS: Herzlichen Glückwunsch zum GE ohne redundante Klammern ;)
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Danke :)

Das "Problem" mit den Leerzeichen ist mir bekannt

Code: Alles auswählen

>>> all_allowed = string.ascii_letters + string.digits + ' '
>>> all_allowed
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 '
>>> f = lambda x: ''.join(c for c in x if c in all_allowed)
>>> f('Ha---- § l l +++****+++""### o==')
'Ha  l l  o'
>>> 
the more they change the more they stay the same
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

@Dav1d Deine Implementation ist sehr ineffizient, all_allowed sollte in set sein, darauf sind Operationen wie in deutlich günstiger.
TRiBLy
User
Beiträge: 2
Registriert: Samstag 20. Februar 2010, 15:57

Irgendwie steh ich auf'm Schlauch. Ich dachte Strings seien unveränderbar, aufgrund ihrer Funktion als Key :shock:
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

TRiBLy hat geschrieben:Ich dachte Strings seien unveränderbar
Korrekt.
Ronnie
User
Beiträge: 73
Registriert: Sonntag 21. März 2004, 17:44

Holgi22 hat geschrieben:habs mit replace, re.sub etc verucht aber klappt nicht wirklich :(

Code: Alles auswählen

>>> a = "Ha---- § l l +++****+++'''### o=="
>>> import re
>>> a = re.sub(r'\W+', '', a)
Achtung: User ist ein Python-Lehrling!
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

TRiBLy hat geschrieben:Irgendwie steh ich auf'm Schlauch. Ich dachte Strings seien unveränderbar, aufgrund ihrer Funktion als Key :shock:
Es werden auch keine Strings verändert, sondern neue erzeugt.
Das Leben ist wie ein Tennisball.
Antworten