2016-08-27 1 views
1

ich Python nur einige Interpunktion aus einem String entfernen möchten, lassen Sie uns sagen, dass ich die ganze Zeichensetzung außer entfernen möchten ‚@‘Python - Entfernen einige Interpunktion von Text

import string 
remove = dict.fromkeys(map(ord, '\n ' + string.punctuation)) 
sample = 'The quick brown fox, like, totally jumped, @man!' 
sample.translate(remove) 

Hier ist der Ausgang

The quick brown fox like totally jumped man 

Aber was ich will, ist so etwas wie dies

The quick brown fox like totally jumped @man 

gibt es eine Möglichkeit Interpunktion, um selektiv zu entfernen aus einem Text, der die Interpunktion auslässt, die wir im Text intakt haben wollen?

+0

Ich sehe keine Leerzeichen in der Ausgabe dieses Codes. Sind Sie sicher, dass Sie genau das bekommen? – TigerhawkT3

Antwort

2

entfernen Sie einfach das gewünschte Zeichen nicht von der Ersatzzeichenfolge berühren:

import string 
remove = dict.fromkeys(map(ord, '\n' + string.punctuation.replace('@',''))) 
sample = 'The quick brown fox, like, totally jumped, @man!' 
sample.translate(remove) 

Beachten Sie auch, dass ich '\n '-'\n' geändert, wie die ehemaligen Räume aus der Zeichenfolge entfernt werden.

Ergebnis:

The quick brown fox like totally jumped @man 
2

str.punctuation enthält alle Interpunktionen. Entfernen Sie @ daraus. Dann ersetzen Sie mit '', wann immer Sie diese Interpunktionszeichenfolge erhalten.

>>> import re 
>>> a = string.punctuation.replace('@','') 
>>> re.sub(r'[{}]'.format(a),'','The quick brown fox, like, totally jumped, @man!') 
'The quick brown fox like totally jumped @man' 
+0

Was nutzt der Regex-Teil? – rksh

Verwandte Themen