Question originale :
Comment puis-je remplacer efficacement plusieurs caractères dans une chaîne, tel que & -> &, # -> #, etc.?
Bien que le code fourni fonctionne, il implique plusieurs remplacements séquentiels, qui peuvent être inefficaces.
strs = strs.replace('&', '\&') strs = strs.replace('#', '\#') ...
Une approche plus efficace consiste à enchaîner les remplacements.
text.replace('&', '\&').replace('#', '\#')
Test :Remplacez les caractères & et # dans la chaîne abc&def#ghi.
Method | Time (μs per loop) |
---|---|
Chaining replacements | 0.814 |
Diverses autres méthodes sont disponibles pour remplacer des caractères dans un string :
import re rx = re.compile('([&#])') text = rx.sub(r'\', text)
def mk_esc(esc_chars): return lambda s: ''.join(['\' + c if c in esc_chars else c for c in s]) esc = mk_esc('&#') text = esc(text)
chars = "&#" for c in chars: text = text.replace(c, "\" + c)
Au lieu de en vérifiant l'existence de chaque caractère dans la chaîne d'entrée, utilisez un itérateur pour parcourir les caractères à remplacer. Cela peut améliorer considérablement les performances.
Python 3 surpasse Python 2 dans les tâches de remplacement de caractères en raison de ses capacités de manipulation de chaînes plus rapides.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!