Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 문자열을 다른 문자열로 한 번에 모두 바꾸는 방법

Python에서는 문자열 내의 특정 부분을 다른 문자열로 교체해야 하는 경우가 자주 발생합니다. 이때 가장 간단하게 사용할 수 있는 방법은 문자열 클래스에 기본으로 내장된 replace() 메서드입니다. 이 메서드는 교체 대상이 되는 문자열새로 대체할 문자열을 인자로 받아, 해당 문자열 객체에 등장하는 모든 일치 항목을 한 번에 변경해 줍니다.

replace() 메서드 사용하기

replace() 메서드는 문자열 객체에서 직접 호출하며, 아래와 같이 사용합니다. 예를 들어 'no'를 'yes'로 모두 바꾸려면 다음과 같이 작성합니다.

>>> 'no one knows how'.replace('no', 'yes')
'yes one kyesws how'
>>> "chihuahua".replace("hua", "hah")
'chihahhah'

위 예시에서 볼 수 있듯이, replace()는 단순한 문자열 매칭 방식으로 동작하기 때문에 단어 경계를 구분하지 않습니다. 즉, 첫 번째 예시에서 'knows' 안에 포함된 'no'까지 함께 치환되어 'kyesws'라는 결과가 나온 것입니다. 따라서 정확한 단어 단위 치환이 필요하다면 정규표현식을 활용하는 것이 좋습니다.

re.sub()로 정규표현식 치환하기

Python의 re 모듈을 사용하면 정규표현식(regex) 기반으로 더 정교한 치환 작업을 수행할 수 있습니다. re.sub(찾을_패턴, 대체할_문자열, 원본_문자열) 형태로 호출하여 문자열 내의 패턴에 일치하는 모든 부분을 교체합니다.

>>> import re
>>> re.sub('hua', 'hah', 'chihuahua')
'chihahhah'

re.sub()의 장점

re.sub()은 단순 치환을 넘어 매우 강력한 기능을 제공합니다. 예를 들어 다음과 같은 작업이 가능합니다.

  • 단어 경계 지정: \bno\b 패턴을 사용하면 독립된 단어 'no'만 치환하고, 'knows'처럼 다른 단어에 포함된 경우는 그대로 둡니다.
  • 대소문자 무시: re.sub('hua', 'hah', text, flags=re.IGNORECASE)처럼 플래그를 지정하면 대소문자 구분 없이 치환할 수 있습니다.
  • 복잡한 패턴 매칭: 숫자, 이메일 형식 등 복잡한 조건의 문자열도 손쉽게 찾아 교체할 수 있습니다.

정리

간단한 문자열 치환에는 str.replace() 메서드가 가장 직관적이고 빠르며, 단어 경계나 복잡한 조건이 필요한 경우에는 re.sub()를 사용하는 것이 적합합니다. 두 방법의 특성을 잘 이해하고 상황에 맞게 선택하면 효율적인 문자열 처리가 가능합니다.