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 :shock:

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 :shock:
Es werden auch keine Strings verändert, sondern neue erzeugt.