Hoe verwijder je alle leestekens in een string? (Python)

Bijvoorbeeld:

asking="hello! what's your name?"

Kan ik dit gewoon doen?

asking.strip("!'?")

Antwoord 1, autoriteit 100%

Een heel eenvoudige implementatie is:

out = "".join(c for c in asking if c not in ('!','.',':'))

en blijf andere soorten leestekens toevoegen.

Een efficiëntere manier zou zijn

import string
stringIn = "string.with.punctuation!"
out = stringIn.translate(stringIn.maketrans("",""), string.punctuation)

Bewerken: er is hier wat meer discussie over efficiëntie en andere implementaties:
De beste manier om interpunctie uit een tekenreeks in Python te verwijderen


Antwoord 2, autoriteit 71%

import string
asking = "".join(l for l in asking if l not in string.punctuation)

filter met string.punctuation.


Antwoord 3

Dit werkt, maar er zijn wellicht betere oplossingen.

asking="hello! what's your name?"
asking = ''.join([c for c in asking if c not in ('!', '?')])
print asking

Antwoord 4

Strip werkt niet. Het verwijdert alleen algemene instanties, niet alles daartussenin: http: // docs.python.org/2/Library/sttypes.html#str.strip

plezier met filter:

import string
asking = "hello! what's your name?"
predicate = lambda x:x not in string.punctuation
filter(predicate, asking)

Other episodes