Seite 1 von 1
Sonderzeichen eines strings eliminieren
Verfasst: Mittwoch 3. März 2010, 21:08
von Holgi22
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ß
Verfasst: Mittwoch 3. März 2010, 21:10
von numerix
Verfasst: Mittwoch 3. März 2010, 21:16
von Holgi22
ohh das ging schnell, Danke!!!

Verfasst: Mittwoch 3. März 2010, 21:28
von 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ß
Verfasst: Donnerstag 4. März 2010, 15:42
von Dav1d
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'
Verfasst: Donnerstag 4. März 2010, 16:49
von derdon
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

Verfasst: Donnerstag 4. März 2010, 17:27
von Dav1d
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'
>>>
Verfasst: Donnerstag 4. März 2010, 20:23
von DasIch
@Dav1d Deine Implementation ist sehr ineffizient, all_allowed sollte in set sein, darauf sind Operationen wie in deutlich günstiger.
Verfasst: Donnerstag 4. März 2010, 21:54
von TRiBLy
Irgendwie steh ich auf'm Schlauch. Ich dachte Strings seien unveränderbar, aufgrund ihrer Funktion als Key

Verfasst: Donnerstag 4. März 2010, 22:00
von numerix
TRiBLy hat geschrieben:Ich dachte Strings seien unveränderbar
Korrekt.
Re: Sonderzeichen eines strings eliminieren
Verfasst: Donnerstag 4. März 2010, 22:31
von Ronnie
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)
Verfasst: Donnerstag 4. März 2010, 23:20
von EyDu
TRiBLy hat geschrieben:Irgendwie steh ich auf'm Schlauch. Ich dachte Strings seien unveränderbar, aufgrund ihrer Funktion als Key

Es werden auch keine Strings verändert, sondern neue erzeugt.