21 Stimmen

Python String ersetzen basierend auf Zeichen NICHT in RegEx

Ist es möglich, einen Reqex zu erstellen, der Zeichen findet, die NICHT in einer bestimmten Menge enthalten sind?

Anstatt eine Reihe von Charakteren auf die schwarze Liste zu setzen und sie zu ersetzen, wäre es für mich einfacher, eine bestimmte Gruppe zuzulassen und Charaktere zu ersetzen, die nicht in dieser Gruppe sind.

Mein Set sieht folgendermaßen aus: [.a-zA-Z0-9]

Ich würde gerne etwas in dieser Art machen:

clean_filename = re.sub(r'([.a-zA-Z0-9])', "_", filename)

Offensichtlich würde dieser Code die Zeichen ersetzen, die ich behalten möchte. Gibt es eine Möglichkeit, die Zeichen zu ersetzen, die NICHT in dieser Menge enthalten sind?

32voto

ThiefMaster Punkte 297146

Ja, verwenden Sie die ^ Negation "Modifikator": r'[^.a-zA-Z0-9]'

4voto

Petri Lehtinen Punkte 1957
clean_filename = re.sub(r'[^.a-zA-Z0-9]', "_", filename)

3voto

hsz Punkte 142920

Versuchen Sie es mit:

re.sub(r'[^a-zA-Z0-9]', "_", filename)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X