La suppression de la ponctuation des chaînes est une tâche courante dans de nombreux scénarios de programmation. Bien que diverses méthodes existent, sélectionner la plus efficace peut s'avérer difficile.
Pour une efficacité maximale, la traduction de chaînes règne en maître. L'utilisation de s.translate(None, string.uccion) garantit que les opérations sur les chaînes brutes sont effectuées en C, offrant une vitesse inégalée. Pour les versions 3.9 et supérieures de Python, utilisez s.translate(str.maketrans('', '', string.uccion)).
Si la vitesse n'est pas primordial, envisagez ces alternatives :
Pour évaluer les performances de ces méthodes, le code suivant a été exécuté :
import re, string, timeit s = "string. With. Punctuation" exclude = set(string.punctuation) table = string.maketrans("","") regex = re.compile('[%s]' % re.escape(string.punctuation)) def test_set(s): return ''.join(ch for ch in s if ch not in exclude) def test_re(s): return regex.sub('', s) def test_trans(s): return s.translate(table, string.punctuation) def test_repl(s): for c in string.punctuation: s=s.replace(c,"") return s print "sets :",timeit.Timer('f(s)', 'from __main__ import s,test_set as f').timeit(1000000) print "regex :",timeit.Timer('f(s)', 'from __main__ import s,test_re as f').timeit(1000000) print "translate :",timeit.Timer('f(s)', 'from __main__ import s,test_trans as f').timeit(1000000) print "replace :",timeit.Timer('f(s)', 'from __main__ import s,test_repl as f').timeit(1000000)
Les résultats ont révélé ce qui suit :
Lors de l'optimisation de la vitesse, la traduction des chaînes est le choix incontesté. Pour les scénarios moins gourmands en performances, des approches alternatives telles que l'exclusion d'ensembles ou les expressions régulières peuvent fournir des résultats satisfaisants.
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!