Mehrere Zeichen im String ersetzen

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
Kalypso
User
Beiträge: 1
Registriert: Mittwoch 26. Oktober 2016, 13:59

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
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

String nach Liste,
Map mit Lambda Funktion und Wörterbuch
Liste nach String
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

@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)
BlackJack

Wenn es verlustbehaftet sein darf, dann gäbe es auch noch: https://pypi.python.org/pypi/Unidecode/
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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))
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

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.'
Antworten