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

Python에서 문자열의 마지막 등장 부분만 다른 문자열로 교체하는 방법

Python의 str.replace() 메서드는 기본적으로 문자열 내에서 일치하는 모든 부분을 교체합니다. 하지만 때로는 마지막으로 등장하는 문자열만 골라서 교체해야 하는 경우가 있습니다. 이 글에서는 이런 작업을 수행할 수 있는 두 가지 실용적인 방법을 예제 코드와 함께 소개합니다.

방법 1: 문자열 뒤집기([::-1] 슬라이싱) 활용하기

핵심 아이디어는 간단합니다. 문자열을 거꾸로 뒤집으면 '마지막'에 있던 부분이 '처음'으로 이동합니다. 따라서 아래 순서대로 처리하면 원하는 결과를 얻을 수 있습니다.

  1. 원본 문자열을 뒤집는다.
  2. 교체 대상 문자열(old)도 뒤집는다.
  3. str.replace()를 사용해 첫 번째 일치 항목만 새 문자열(new)의 뒤집힌 버전으로 교체한다.
  4. 결과 문자열을 다시 뒤집어 원래 순서로 되돌린다.

Python에서는 슬라이싱 표기법인 [::-1]을 사용하면 손쉽게 문자열을 뒤집을 수 있습니다.

def rreplace(s, old, new):
    return (s[::-1].replace(old[::-1], new[::-1], 1))[::-1]

rreplace('Hello world, hello world, hello world', 'hello', 'hi')

실행 결과:

'Hello world, hello world, hi world'

방법 2: rsplit() 활용하기

더 직관적인 방법은 rsplit()을 사용하는 것입니다. rsplit()은 문자열을 오른쪽부터 분할하며, 두 번째 인자로 분할 횟수를 지정할 수 있습니다. 따라서 딱 한 번만 분할한 뒤 join()으로 새 문자열을 연결하면 마지막 등장 부분만 교체됩니다.

def rreplace(s, old, new):
    li = s.rsplit(old, 1)  # 오른쪽부터 한 번만 분할
    return new.join(li)

rreplace('Hello world, hello world, hello world', 'hello', 'hi')

실행 결과:

'Hello world, hello world, hi world'

정리

두 방법 모두 동일한 결과를 얻습니다. 다만 rsplit() 방식은 코드가 더 짧고 가독성이 좋아 일반적으로 더 권장됩니다. 반면 문자열 뒤집기 방식은 replace()의 세 번째 인자인 count 매개변수를 응용하는 좋은 예시이므로, 상황과 취향에 맞게 선택해서 사용하면 됩니다.