> 백엔드 개발 > 파이썬 튜토리얼 > Python의 문자열에서 구두점을 제거하는 가장 효율적인 방법은 무엇입니까?

Python의 문자열에서 구두점을 제거하는 가장 효율적인 방법은 무엇입니까?

DDD
풀어 주다: 2024-12-22 01:30:22
원래의
275명이 탐색했습니다.

What's the Most Efficient Way to Remove Punctuation from a String in Python?

문자열에서 구두점을 제거하는 가장 좋은 방법

Python에서 문자열에서 구두점을 제거하려고 할 때 다음 접근 방식을 활용할 수 있습니다.

import string
s = "string. With. Punctuation?"  # Sample string
out = s.translate(string.maketrans("",""), string.punctuation)
로그인 후 복사

그러나 이 방법은 지나치게 복잡해 보일 수 있습니다. 더 간단한 솔루션이 있습니까?

효율성 관점

최적의 효율성을 위해서는 이를 능가하기 어렵습니다.

s.translate(None, string.punctuation)
로그인 후 복사

이 코드는 C의 원시 문자열을 활용합니다. 조회 테이블을 사용한 작업으로 고도로 최적화된

대체 접근 방식

속도가 주요 관심사가 아닌 경우 다음 대안을 고려하십시오.

exclude = set(string.punctuation)
s = ''.join(ch for ch in s if ch not in exclude)
로그인 후 복사

이 옵션은 다음을 사용하는 것보다 빠릅니다. s.replace는 각 문자에 대해 수행되지만 다음과 같은 비순수 Python 접근 방식에서는 여전히 성능이 뛰어납니다. string.translate.

타이밍 분석

이러한 방법의 성능을 비교하기 위해 다음 타이밍 코드가 사용됩니다.

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)
로그인 후 복사

결과 다음을 나타냅니다.

  • 집합 기반 접근 방식은 정규 표현식이나 문자열보다 효율성이 떨어집니다. 번역.
  • string.translate는 집합 및 정규식 방법 모두보다 성능이 뛰어납니다.
  • 교체 방법이 가장 느립니다.

따라서 효율적인 구두점 제거를 위해 s.translate(None, string.tempoation) (낮은 Python 버전의 경우) 또는 s.translate(str.maketrans('', '', 문자열.구두점)) (상위 Python 버전의 경우) 코드.

위 내용은 Python의 문자열에서 구두점을 제거하는 가장 효율적인 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿