Program Tip

Python의 string.replace 대 re.sub 사용

programtip 2020. 12. 14. 20:46
반응형

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는 의도 된 목적에 환상적입니다. 가변성이 높은 건초 더미에서 가변성이 높은 바늘을 검색하는 것입니다. 정밀한 토크 렌치라고 생각하면됩니다. 특정 작업을위한 완벽한 도구이지만 망치가 끔찍합니다.

무엇을 사용해야할지 확실하지 않은 경우 따라야 할 몇 가지 지침 :

이러한 질문에 대한 답이 "예"이면 문자열 조작을 원할 것입니다. 그렇지 않으면 정규식을 고려하십시오.


고려해야 할 또 다른 사항은 다소 복잡한 대체를 수행하는 경우 str.translate () 가 찾고있는 것일 수 있다는 것입니다.

참고 URL : https://stackoverflow.com/questions/5668947/use-pythons-string-replace-vs-re-sub

반응형