从字符串中删除标点符号是许多编程场景中的常见任务。虽然存在多种方法,但选择最有效的一种可能具有挑战性。
为了实现最高效率,字符串翻译占据主导地位。使用 s.translate(None, string.punctuation) 可确保在 C 中执行原始字符串操作,从而提供无与伦比的速度。对于 Python 3.9 及更高版本,利用 s.translate(str.maketrans('', '', string.punctuation))。
如果速度不是最重要的,请考虑以下替代方案:
为了衡量这些方法的性能,执行了以下代码:
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)
结果显示如下:
在优化速度时,字符串翻译是无可争议的选择。对于性能不太密集的场景,集合排除或正则表达式等替代方法可以提供令人满意的结果。
以上是在 Python 中从字符串中删除标点符号的最有效方法是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!