Seite 1 von 1

Mehrere Zeichen im String ersetzen

Verfasst: Mittwoch 26. Oktober 2016, 14:17
von Kalypso
Hallo zusammen,

Ich arbeite an einem Programm zum Verschlüsseln. Nach der Eingabe eines Textes sollen alle Sonderzeichen gestrichen sowie Umlaute und ß umgewandelt werden. Es muss doch noch eine bessere Lösung geben, als auf alle möglichen Zeichen einzeln den Replace-Befehl anzuwenden...
Hat jemand eine Idee?

Liebe Grüße

Re: Mehrere Zeichen im String ersetzen

Verfasst: Mittwoch 26. Oktober 2016, 14:30
von darktrym
String nach Liste,
Map mit Lambda Funktion und Wörterbuch
Liste nach String

Re: Mehrere Zeichen im String ersetzen

Verfasst: Mittwoch 26. Oktober 2016, 14:58
von jerch
@Kalypso:
- Verschlüsselungsalgo auf größeren Zeichenvorrat ausdehnen (eher ungünstig, da Unicode ~1,2 Mio. Zeichen derzeit)
- String in anderes Encoding wandeln (z.B. BASE64, 8Bit-Encoding oder Bytefolge)

Re: Mehrere Zeichen im String ersetzen

Verfasst: Mittwoch 26. Oktober 2016, 15:15
von BlackJack
Wenn es verlustbehaftet sein darf, dann gäbe es auch noch: https://pypi.python.org/pypi/Unidecode/

Re: Mehrere Zeichen im String ersetzen

Verfasst: Donnerstag 27. Oktober 2016, 23:23
von snafu
Mir würde als erstes das einfallen:

Code: Alles auswählen

import string

allowed = set(string.ascii_letters)
text = 'afgfg__bbbx..gfggr_ccaad**~~;;:gt????bbb'
result = ''.join(char for char in text if char in allowed)
# etwas schneller
result = ''.join(filter(allowed.__contains__, text))

Re: Mehrere Zeichen im String ersetzen

Verfasst: Freitag 28. Oktober 2016, 07:50
von Sirius3
Die komischen Pünkchen und Striche über den Zeichen kann man so entfernen:

Code: Alles auswählen

>>> unicodedata.normalize("NFD", u"Renè schläft im Büro.").encode('ASCII', 'ignore')
'Rene schlaft im Buro.'