Python의 string.replace 대 re.sub 사용
Python 2.5, 2.6의 경우 string.replace
또는 re.sub
기본 텍스트 대체를 사용해야 합니까?
PHP에서 이것은 명시 적으로 언급되었지만 Python에 대한 유사한 메모를 찾을 수 없습니다.
으로 할 수있는 한 str.replace()
사용해야합니다. 이스케이프와 같은 정규 표현식의 모든 함정을 피하고 일반적으로 더 빠릅니다.
str.replace()
가능할 때마다 사용해야합니다. 더 명확하고 간단하며 빠릅니다.
In [1]: import re
In [2]: text = """For python 2.5, 2.6, should I be using string.replace or re.sub for basic text replacements.
In PHP, this was explicitly stated but I can't find a similar note for python.
"""
In [3]: timeit text.replace('e', 'X')
1000000 loops, best of 3: 735 ns per loop
In [4]: timeit re.sub('e', 'X', text)
100000 loops, best of 3: 5.52 us per loop
문자열 조작은 일반적으로 적응 방법을 알아낼 수있을 때 정규식보다 선호됩니다. 정규식은 매우 강력하지만 그건 일반적으로 느린, 그리고 일반적으로 더 열심히 작성, 디버그 및 유지 관리.
즉, 위 단락에서 "보통"의 양을 주목하십시오! 20 자 정규식으로 할 수 있었던 일에 대해 엄청난 줄의 문자열 조작을 작성하는 것이 가능합니다 (그리고 저는 그것을 봤습니다). 좋은 정규식 엔진이 거의 같은 속도로 할 수있는 작업에 "효율적인"문자열 함수를 사용하여 귀중한 시간을 낭비 할 수도 있습니다. 그리고 유지 관리가 가능합니다. Regex는 엄청나게 복잡 할 수 있지만 때로는 정규식이 거대한 절차 코드 블록보다 더 간단하고 읽기 쉽습니다.
Regex는 의도 된 목적에 환상적입니다. 가변성이 높은 건초 더미에서 가변성이 높은 바늘을 검색하는 것입니다. 정밀한 토크 렌치라고 생각하면됩니다. 특정 작업을위한 완벽한 도구이지만 망치가 끔찍합니다.
무엇을 사용해야할지 확실하지 않은 경우 따라야 할 몇 가지 지침 :
- 찾고있는 패턴이 매우 정적입니까? 예를 들어 모든 쉼표, 파이프 또는 탭에서 문자열을 분할 하시겠습니까?
- 리소스 효율성이 개발자 시간보다 더 중요합니까? 우선 순위는 무엇입니까? 기억하십시오 : 하드웨어는 저렴하고 프로그래머는 비쌉니다 .
- 당신이 작업하는 HTML, XML, 또는 다른 문맥 자유 문법? 정규식에는 제한이 있다는 것을 잊지 마십시오 .
- 그리고 나의 # 1 법칙 : 5 분 동안 문제를 해결한다면 정규식이 아닌 접근 방식에 대한 아이디어를 대략적으로 다룰 수 있습니까?
이러한 질문에 대한 답이 "예"이면 문자열 조작을 원할 것입니다. 그렇지 않으면 정규식을 고려하십시오.
고려해야 할 또 다른 사항은 다소 복잡한 대체를 수행하는 경우 str.translate () 가 찾고있는 것일 수 있다는 것입니다.
참고 URL : https://stackoverflow.com/questions/5668947/use-pythons-string-replace-vs-re-sub
'Program Tip' 카테고리의 다른 글
표시하지 않고 VBA로 읽기 위해 Excel 파일 열기 (0) | 2020.12.14 |
---|---|
Enum.GetValues () 반환 유형 (0) | 2020.12.14 |
Visual Studio에서 KeyDown 이벤트, KeyPress 이벤트 및 KeyUp 이벤트의 차이점 (0) | 2020.12.14 |
\ n이 포함 된 Python 스트립 (0) | 2020.12.14 |
Rails에서 오류없이 파일을 삭제하는 방법 (0) | 2020.12.14 |