파이썬(python)2025. 5. 6. 19:22

파이썬(python)에서 정규표현식(regex)을 이용해서 문자열을 대체하는 방법이다. re 모듈의 re.sub() 함수를 이용하면 된다. 인자(argument)는 정규표현식 패턴, 대체할 문자열, 입력 문자열 순서다. 예를 들어 "abc111" 문자열에서 수자를 "X"로 대체한다면 아래와 같이 할 수 있겠다.

 

import re

re.sub("[0-9]", "X", "abc111")

 

위와 같이 하면 수자([0-9]) 세개가 모두 "X"로 대체되어 "abcXXX"가 된다. 만약 처음 일치하는 1개만 바꾸려면 아래와 같이 대체할 개수를 추가적인 인자로 지정하자.

 

# 1개만 대체, 결과값은 abcX11
re.sub("[0-9]", "X", "abc111", 1)

 

만약 대체하고자 하는 문자열에 정규표현식에서 특수한 의미로 사용되는 것이 포함되어 있을 경우가 있다. 예를 들어 문자열 마지막을 나타내는 정규식은 "$"인데 말 그대로 문자열 "$"를 뭔가 다른 것으로 대체하고 싶다면, 문자 그대로 해석하도록(escape) 역슬래시(\) 두개를 추가해 준다. 아래의 예시를 참고하자. 패턴을 지정할 때 "1$" 이렇게 하면 1로 끝나는 문자열 패턴을 의미하고, "1\\$" 이렇게 하면 "1$"를 포함하는 문자열 패턴을 의미한다.

 

# 문자열 1$ -> X 대체 
y = re.sub("1\\$", "X", "abc11$d")
print(y)
# 출력값은 abc1Xd

# 파일명의 확장자 번경: .csv -> .txt
new_filename = re.sub("\\.csv$", ".txt", "my_file.csv")

 

 

Posted by 반달가면