콘텐츠로 건너뛰기

파이썬 정규표현식으로 치환하는 방법을 쉽게 알려드립니다.

[

Python Regex Replace

이 튜토리얼에서는 Python에서 문자열 또는 부분 문자열을 제거하거나 대체하는 방법에 대해 알아보겠습니다. .replace() 메서드와 re.sub() 함수를 사용하여 텍스트를 정리하는 방법이 설명됩니다.

Step 1: .replace() 메서드 사용하기

Python에서 문자열을 대체하는 가장 기본적인 방법은 .replace() 문자열 메서드를 사용하는 것입니다. 이 메서드를 사용하려면 대상 문자열에 .replace()를 연결하고 두 개의 인자를 제공하면 됩니다. 첫 번째 인자는 대체할 문자열이고 두 번째 인자는 대체될 문자열입니다.

>>> "가짜 파이썬".replace("가짜", "진짜")
'진짜 파이썬'

.replace()의 결과가 Python 쉘에 표시되지만 실제 문자열 자체는 변경되지 않습니다. 더 명확하게 보기 위해 문자열을 변수에 할당할 수도 있습니다.

>>> name = "가짜 파이썬"
>>> name.replace("가짜", "진짜")
'진짜 파이썬'
>>> name
'가짜 파이썬'
>>> name = name.replace("가짜", "진짜")
'진짜 파이썬'
>>> name
'진짜 파이썬'

.replace()를 호출할 때 name의 값이 변경되지 않는 것을 확인할 수 있습니다. 그러나 name.replace()의 결과를 name 변수에 할당하면 '가짜 파이썬''진짜 파이썬'으로 변경됩니다.

이제 이 지식을 채팅 트랜스크립트에 적용해보겠습니다.

>>> transcript = """\
... [support_tom] 2022-08-24T10:02:23+00:00 : 도움이 필요한 게 있나요?
... [johndoe] 2022-08-24T10:03:15+00:00 : 제가 제 자료에 접속할 수 없어요!
... [support_tom] 2022-08-24T10:03:30+00:00 : Caps Lock이 꺼져 있는지 확인해보세요.
... [johndoe] 2022-08-24T10:04:03+00:00 : 아이고! 맞았네요!"""
>>> transcript.replace("접속할 수 없어요", "접속할 수 있어요")
"[support_tom] 2022-08-24T10:02:23+00:00 : 도움이 필요한 게 있나요?
[johndoe] 2022-08-24T10:03:15+00:00 : 제가 제 자료에 접속할 수 있어요!
[support_tom] 2022-08-24T10:03:30+00:00 : Caps Lock이 꺼져 있는지 확인해보세요.
[johndoe] 2022-08-24T10:04:03+00:00 : 아이고! 맞았네요!"

.replace() 메서드를 사용하여 대체하기 전과 후를 비교할 수 있습니다. 첫 번째 인자로 대체할 문자열 “접속할 수 없어요”를 전달하고 두 번째 인자로 대체할 문자열 “접속할 수 있어요”를 전달하여 문자열이 변경되었음을 확인할 수 있습니다.

Step 2: 정규식(re.sub())을 사용하여 복잡한 규칙 만들기

간단한 대체 작업 이상을 수행하려면 정규식(re.sub())을 사용하여 더 복잡한 규칙을 만들 수 있습니다. re.sub() 함수는 세 개의 인자를 받습니다. 첫 번째 인자는 대체할 패턴, 두 번째 인자는 대체될 문자열 또는 콜백 함수, 세 번째 인자는 대상 문자열입니다.

>>> import re
>>> text = "hello world"
>>> re.sub(r"world", "python", text)
'hello python'

위 예제에서는 re.sub() 함수를 사용하여 “world”를 “python”으로 대체했습니다. 정규식 r”world”는 “world” 패턴에 일치하는 문자열을 찾아 “python”으로 대체합니다.

Step 3: re.sub()을 사용하여 콜백 함수 적용

더 많은 제어를 위해 re.sub() 함수에 콜백(callback) 함수를 사용할 수도 있습니다. 콜백 함수는 정규식 패턴에 일치하는 문자열을 대체하기 전에 호출되며 대체할 문자열을 반환해야 합니다. 이를 통해 대체되는 문자열에 대해 추가적인 조작을 수행할 수 있습니다.

import re
def replace_word(match):
word = match.group(0)
if word == "world":
return "python"
elif word == "hello":
return "greetings"
else:
return word
text = "hello world"
result = re.sub(r"(hello|world)", replace_word, text)
print(result) # "greetings python"

위 예제에서는 re.sub() 함수에 콜백 함수 replace_word를 사용하여 “hello”를 “greetings”로, “world”를 “python”으로 대체하도록 했습니다.

Step 4: 스크립트에 콜백 적용하기

이제 앞의 예제를 기반으로 스크립트에 콜백 함수를 적용해 보겠습니다. 아래의 코드는 채팅 트랜스크립트에서 “BLASTED”를 ”😤“로 대체합니다. 따라서 욕설이 들어있는 메시지를 이모지로 대체합니다.

import re
def replace_swears(match):
word = match.group(0)
if word == "BLASTED":
return "😤"
else:
return word
transcript = """\
[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY BLASTED ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : Blast! You're right!"""
result = re.sub(r"\b([A-Z]+)\b", replace_swears, transcript)
print(result)

위 예제에서는 replace_swears라는 콜백 함수를 만들고 “BLASTED”를 ”😤“로 대체하도록 했습니다. \b([A-Z]+)\b 패턴은 모든 대문자로 구성된 단어를 찾아 대체하는 데 사용됩니다.

결론

이 튜토리얼에서는 Python에서 문자열 또는 부분 문자열을 제거하거나 대체하는 방법에 대해 알아보았습니다. .replace() 메서드와 re.sub() 함수를 사용하여 간단한 대체 작업부터 복잡한 규칙을 만드는 방법을 알아보았습니다. 이를 통해 텍스트 정리 작업을 수행할 수 있고, 개인 정보를 제거하거나 욕설을 이모지로 대체할 수 있습니다.

  • .replace() 메서드를 사용하여 문자열을 대체할 수 있습니다.
  • re.sub() 함수를 사용하여 정규식을 활용하여 대체 작업을 수행할 수 있습니다.
  • 콜백 함수를 사용하여 대체되는 문자열을 제어할 수 있습니다.

이를 기반으로 자신의 프로젝트나 스크립트에서 문자열 대체 작업을 수행할 수 있습니다.

추천 동영상 강좌

유료 광고 제거하기