Ersetzen Sie nicht-alphanumerische Zeichen außer einigen Ausnahmen python

8

In Perl s/[^\w:]//g würde alle nicht alphanumerischen Zeichen ersetzen AUSSER:

In Python verwende ich re.sub(r'\W+', '',mystring) Das entfernt alle nicht alphanumerischen außer _ Unterstrich. Gibt es eine Möglichkeit Ausnahmen zu setzen, ich möchte Zeichen wie = und. Nicht ersetzen.

Früher habe ich den anderen Ansatz angewendet, d. h. alle unerwünschten Zeichen durch re.sub('[!@#\'\" $ ()] ',' ', mystring' zu ersetzen. Es ist mir jedoch nicht möglich vorherzusagen, welche Zeichen in mystring enthalten sein können. Daher möchte ich alle nicht alphanumerischen Zeichen außer einigen wenigen entfernen.

Google hat keine passende Antwort angegeben. Die nächste Suche ist python regex split any \ W + mit einigen Ausnahmen aber das hat mir auch nicht geholfen.

    
user1977867 14.01.2015, 08:41
quelle

3 Antworten

8

Sie können alles, was Sie nicht entfernen müssen, in den negierten Zeichen clas angeben.

%Vor%

Test

%Vor%

Hier ist die Variable removelist eine Zeichenkette, die die Liste aller Zeichen enthält, die Sie vom Entfernen ausschließen müssen.

Was bedeutet negierte Zeichenklasse

?

Wenn ^ in die Zeichenklasse verschoben wird, fungiert es nicht als Anker, da es die Zeichenklasse negiert.

Das ist ^ innerhalb einer Zeichenklasse, sagen wir wie [^abc] es negiert die Bedeutung der Zeichenklasse.

Zum Beispiel wird [abc] mit a b oder c übereinstimmen, wobei [^abc] nicht mit a b oder c übereinstimmt. Das kann auch als anders als a b oder c

formuliert werden     
nu11p01n73R 14.01.2015, 08:51
quelle
6
%Vor%

Sie können wie gewünscht% ce_de% hinzufügen, je nachdem, was Sie speichern möchten.

    
vks 14.01.2015 08:50
quelle
4

Ich glaube, dass der Ansatz, den Sie in Perl beschreiben, auch in Python verwendet werden kann, zB:

%Vor%

würde alles außer Wortzeichen und =

entfernen     
maillard 14.01.2015 08:49
quelle

Tags und Links