본문 바로가기
Python/Python FAQ

Python 파이썬에서 문자열에서 영숫자 문자만 남기고 모두 제거하기, Stripping everything but alphanumeric chars from a string in Python

by 베타코드 2023. 11. 16.
반응형

질문


파이썬을 사용하여 문자열에서 모든 영숫자가 아닌 문자를 제거하는 가장 좋은 방법은 무엇인가요?

이 질문의 PHP 버전에서 제시된 해결책들은 약간의 조정을 거치면 작동할 것 같지만, '파이썬 다운' 느낌이 들지 않습니다.

기록을 위해, 저는 마침표와 쉼표(및 기타 구두점)뿐만 아니라 따옴표, 괄호 등도 제거하려고 합니다.


답변


저는 그냥 호기심으로 몇 가지 함수를 시간 측정해 보았습니다. 이 테스트에서는 내장된 string 모듈의 string.printable에서 비알파벳 및 숫자가 아닌 문자를 제거합니다. '[\W_]+'pattern.sub('', str)의 사용이 가장 빠르다는 것을 알게 되었습니다.

$ python -m timeit -s \
     "import string" \
     "''.join(ch for ch in string.printable if ch.isalnum())" 
3회 중 최적: 57.6 마이크로초 당 반복

$ python -m timeit -s \
    "import string" \
    "filter(str.isalnum, string.printable)"                 
3회 중 최적: 37.9 마이크로초 당 반복

$ python -m timeit -s \
    "import re, string" \
    "re.sub('[\W_]', '', string.printable)"
3회 중 최적: 27.5 마이크로초 당 반복

$ python -m timeit -s \
    "import re, string" \
    "re.sub('[\W_]+', '', string.printable)"                
3회 중 최적: 15 마이크로초 당 반복

$ python -m timeit -s \
    "import re, string; pattern = re.compile('[\W_]+')" \
    "pattern.sub('', string.printable)" 
3회 중 최적: 11.2 마이크로초 당 반복
반응형

댓글