232 votes

Python: remplacer des caractères dans la chaîne

J'utilise

string.replace(',', '').replace("!", '').replace(":", '').replace(";", '')...

Mais j'ai beaucoup de personnages que j'ai à remplacer. J'ai pensé à une liste

list = [',', '!', '.', ';'...]

Mais comment puis-je utiliser l' list pour remplacer les caractères dans l' string?

je vous remercie.

280voto

georg Points 52691

Essayez d'expressions régulières:

 a = re.sub('[.!,;]', '', a)

Vous pouvez également construit une expression dynamique à partir d'une liste de caractères:

import re

a = 'a..!b...c???d;;'
chars = [',', '!', '.', ';', '?']

print re.sub('[%s]' % ''.join(chars), '', a)

Traduire la méthode qui fonctionne le mieux pour la plaine de chaînes:

s = 'A.B!C?'
print s.translate(None, ''.join(chars))

pour les chaînes unicode le code est un peu plus compliqué:

s = u'A.B!C?'
print s.translate(dict((ord(c), u'') for c in chars))

120voto

Sven Marnach Points 133943

Vous pouvez utiliser str.translate():

s.translate(None, ",!.;")

Exemple:

>>> s = "asjo,fdjk;djaso,oio!kod.kjods;dkps"
>>> s.translate(None, ",!.;")
'asjofdjkdjasooiokodkjodsdkps'

37voto

Praveen Gollakota Points 8440

Vous pouvez utiliser la traduire de méthode.

s.translate(None, '!.;,')

18voto

ninjagecko Points 25709
''.join(c for c in myString if not c in badTokens)

9voto

alan Points 2434

Une autre approche utilisant les regex:

''.join(re.split(r'[.;!?,]', s))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X