반응형
질문
나는 .replace 함수를 사용하여 여러 문자열을 교체하고 싶습니다.
현재 다음과 같습니다.
string.replace("condition1", "")
하지만 다음과 같은 것을 원합니다.
string.replace("condition1", "").replace("condition2", "text")
그러나 이는 좋은 구문 같지 않습니다.
이를 올바르게 수행하는 방법은 무엇인가요? grep/regex에서 특정 검색 문자열에 대한 필드를 교체하는 것과 같이 \1
과 \2
를 사용할 수 있는 방법이 있을까요?
답변
여기에는 정규 표현식을 사용하여 작업을 수행하는 간단한 예제가 있습니다:
import re
rep = {"condition1": "", "condition2": "text"} # 원하는 대체 값을 여기에 정의하세요
# 이 세 줄을 사용하여 대체 작업을 수행합니다
rep = dict((re.escape(k), v) for k, v in rep.iteritems())
# Python 3에서는 dict.iteritems를 dict.items로 변경했으므로 최신 버전에서는 rep.items()을 사용하세요
pattern = re.compile("|".join(rep.keys()))
text = pattern.sub(lambda m: rep[re.escape(m.group(0))], text)
예를 들어:
>>> pattern.sub(lambda m: rep[re.escape(m.group(0))], "(condition1) and --condition2--")
'() and --text--'
반응형
댓글