2010-06-02 3 views
0

J'ai trouvé cet exemple sur un débordement de pile. Je le comprends, mais semble un peu plus pour un concept de méthode aussi simple ... enlever plusieurs caractères d'une chaîne.python3: suppression de plusieurs caractères d'une chaîne avec une longue chaîne de .replace(). Replace(). Replace()

 
import string 
exclude = set(string.punctuation) 
s = ''.join(ch for ch in s if ch not in exclude) 

est-il une méthode de chaîne builtin en python 3.1 pour faire quelque chose à hauteur de:

 
s = "a,b,c,d,e,f,g,h,i" 
s = s.strip([",", "d", "h"]) 

au lieu de:

 
s = s.replace(",", "").replace("d", "").replace("h", "") 

Répondre

2

Je ne suis pas d'accord que l'exemple que vous trouvé est trop complexe. Pour votre cas d'utilisation, ce code deviendrait:

s = ''.join(ch for ch in s if ch not in ",dh") 

ce qui me semble plutôt concis. Cependant, il existe une alternative, ce qui est très légèrement plus concis et peut être plus efficace:

s = s.translate(str.maketrans("", "", ",dh")) 

Disclaimer: Je ne l'ai pas fait tester ce code puisque je n'ai pas accès à un interpréteur Python 3.1. L'équivalent en Python 2.6 (que j'ai testé) est:

t = ''.join(chr(i) for i in range(256)) 
s = s.translate(t, ",dh") 
Questions connexes