문자열에서 구두점을 제거하는 것은 많은 프로그래밍 시나리오에서 일반적인 작업입니다. 다양한 방법이 존재하지만 가장 효율적인 방법을 선택하는 것은 어려울 수 있습니다.
최대 효율성을 위해서는 문자열 번역이 가장 중요합니다. s.translate(None, string.punkation)을 사용하면 원시 문자열 작업이 C에서 수행되어 비교할 수 없는 속도를 제공합니다. Python 버전 3.9 이상의 경우 s.translate(str.maketrans('', '', string.tempoation))를 활용하세요.
속도가 빠른 경우 가장 중요한 것은 아니지만 다음 대안을 고려하십시오.
이러한 메서드의 성능을 측정하기 위해 다음 코드가 실행되었습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!