Python에서 문자열의 여러 문자를 바꾸는 방법

  1. 파이썬에서 여러 문자를 바꾸기 위해str.replace()사용
  2. re.sub()또는re.subn()을 사용하여 Python에서 여러 문자 바꾸기
  3. Python에서 여러 문자를 대체하는translate()maketrans()

이 자습서에서는 Python에서 문자열의 여러 문자를 바꾸는 방법을 보여줍니다.

문자열에서 특수 문자를 제거하고 공백으로 바꾸고 싶다고 가정 해 보겠습니다.

-제거 할 특수 문자 목록은!#$%^&*()입니다. -또한 쉼표,를 공백으로 바꾸고 싶습니다. -우리가 조작 할 샘플 텍스트 :

A!!!,Quick,brown#$,fox,ju%m%^ped,ov&er&),th(e*,lazy,d#!og$$$

파이썬에서 여러 문자를 바꾸기 위해str.replace()사용

str 데이터 유형의replace()메서드를 사용하여 하위 문자열을 다른 출력으로 바꿀 수 있습니다.

replace()는 두 개의 매개 변수를 허용하며 첫 번째 매개 변수는 문자열과 일치시킬 정규식 패턴이고 두 번째 매개 변수는 일치하는 문자열의 대체 문자열입니다.

또한 실행할 교체의 최대count를 설정하기 위해 정수를 허용하는replace()의 세 번째 선택적 매개 변수입니다. count 매개 변수로2를 입력하면replace()함수는 문자열 내 2 개의 인스턴스 만 일치하고 대체합니다.

str.replace('hello', 'hi')는 문자열의 모든hello 인스턴스를hi로 바꿉니다. 문자열 Hello World가 있고 여기에 replace 함수를 실행하면 실행 후 Hi World가됩니다.

위에서 선언 한 샘플 텍스트에replace를 사용하겠습니다. 먼저 각 문자를 반복하고 빈 문자열로 대체하여 특수 문자를 제거한 다음 쉼표를 공백으로 변환합니다.

txt = "A!!!,Quick,brown#$,fox,ju%m%^ped,ov&er&),th(e*,lazy,d#!og$$$"

def processString(txt):
  specialChars = "!#$%^&*()" 
  for specialChar in specialChars:
    txt = txt.replace(specialChar, '')
  print(txt) # A,Quick,brown,fox,jumped,over,the,lazy,dog
  txt = txt.replace(',', ' ')
  print(txt) # A Quick brown fox jumped over the lazy dog  

즉,spChars의 대괄호 안에있는 모든 것은txt.replace(spChars, '')를 사용하여 빈 문자열로 대체됩니다.

첫 번째replace()함수의 문자열 결과는 다음과 같습니다.

A,Quick,brown,fox,jumped,over,the,lazy,dog

다음replace()호출은 쉼표,의 모든 인스턴스를 단일 공백으로 바꿉니다.

A Quick brown fox jumped over the lazy dog

re.sub()또는re.subn()을 사용하여 Python에서 여러 문자 바꾸기

Python에서는 사용할 수있는 정규 표현식에 대한 표현식 일치 작업이 많은 re 모듈을 가져올 수 있습니다.

re에있는 두 가지 함수는 sub()subn()입니다.

이러한 메서드에 대한 또 다른 문자열 예제를 선언 해 보겠습니다. 문자열 내의 모든 숫자를 X로 바꾸고 싶다고 가정 해 보겠습니다.

txt = "Hi, my phone number is 089992654231. I am 34 years old. I live in 221B Baker Street. I have 1,000,000 in my bank account."

Python에서 여러 문자를 바꾸기위한 re.sub()

이 함수에는 3 개의 주요 인수가 있습니다. 첫 번째 인수는 정규식 패턴을 받아들이고 두 번째 인수는 일치하는 패턴을 대체 할 문자열이며 세 번째 인수는 작업 할 문자열입니다.

문자열 내의 모든 숫자를 X로 변환하는 함수를 만듭니다.

import re

txt = "Hi, my phone number is 089992654231. I am 34 years old. I live in 221B Baker Street. I have 1,000,000 in my bank account."

def processString3(txt):
  txt = re.sub('[0-9]', 'X', txt)
  print(txt)
  
processString3(txt)

산출:

Hi, my phone number is XXXXXXXXXXXX. I am XX years old. I live in XXXB Baker Street. I have X,XXX,XXX in my bank account.

Python에서 여러 문자를 바꾸기위한 re.subn()

이 함수는 본질적으로re.sub()와 동일하지만 대신 변환 된 문자열의 튜플과 교체 횟수를 반환합니다.

import re

txt = "Hi, my phone number is 089992654231. I am 34 years old. I live in 221B Baker Street. I have 1,000,000 in my bank account."

def processString4(txt):
  txt, n = re.subn('[0-9]', 'X', txt)
  print(txt)
  
processString4(txt)

산출:

Hi, my phone number is XXXXXXXXXXXX. I am XX years old. I live in XXXB Baker Street. I have X,XXX,XXX in my bank account.'
txt, n = re.subn('[0-9]', 'X', txt)

위 코드 스 니펫에서 처리 된 문자열은 txt에 할당되고 교체 카운터는 n에 할당됩니다.

re.subn()은 메트릭으로 또는 추가 처리를 위해 조작 한 패턴 그룹 수를 기록하려는 경우 유용합니다.

Python에서 여러 문자를 대체하는translate()maketrans()

translate()maketrans()는 정규식 이외의 다른 접근 방식을 사용하며 사전을 사용하여 이전 값을 새 값으로 매핑합니다.

maketrans()는 3 개의 매개 변수 또는 단일 매핑 사전을 허용합니다.

  • str1-대체 할 문자열
  • str2-위의 문자를 대체하는 문자열
  • str3-삭제할 문자열

maketrans()는 원래 문자열과 대체 문자열 간의 매핑 테이블입니다.

translate()maketrans()가 반환하는 모든 것을 수락하고 번역 된 문자열을 생성합니다.

문자열 내의 모든 소문자 모음을 대문자로 변환하고 문자열에서 발견 된 모든 x, y, z를 삭제한다고 가정 해 보겠습니다.

txt = "Hi, my name is Mary. I like zebras and xylophones."

def processString5(txt):
  transTable = txt.maketrans("aeiou", "AEIOU", "xyz")
  txt = txt.translate(transTable)
  print(txt)
  
processString5(txt)

산출:

HI, m nAmE Is MAr. I lIkE EbrAs And lOphOnEs.

translate()는 모든 소문자 모음을 대문자 버전으로 변환하고 x, y, z의 모든 인스턴스를 제거했습니다.

이러한 메서드를 사용하는 또 다른 방법은 3 개의 인수 대신 단일 매핑 사전을 사용하는 것입니다.

def processString6(txt):
  dictionary = {'a': 'A', 'e':'E', 'i': 'I', 'o': 'O', 'u': 'U', 'x': None, 'y': None, 'z': None}
  transTable = txt.maketrans(dictionary)
  txt = txt.translate(transTable)
  print(txt)

이것은 여전히processString5와 동일한 출력을 생성하지만 사전으로 구현됩니다. 더 편리한 것을 사용할 수 있습니다.

요약하면 Python에서 가져온 라이브러리의 내장 함수 또는 함수를 사용하여 문자열의 여러 문자를 대체 할 수있는 여러 방법이 있습니다.

가장 일반적인 방법은replace()를 사용하는 것입니다. re.sub()subn()도 사용하고 배우기 쉽습니다. translate()는 문자열 조작을 수행하기 위해 정규 표현식에 의존하지 않고 사전과 맵에 의존하므로 다른 접근 방식을 사용합니다.

원하는 경우 for 루프를 사용하여 문자열을 수동으로 반복하고 자체 조건을 추가하여 교체하고substring()또는split()을 사용할 수도 있지만 매우 비효율적이고 중복됩니다. Python은 사용자를 위해 작업을 수행 할 수있는 기존 함수를 제공하며, 이는 직접 작업을 수행하는 것보다 훨씬 쉽습니다.

관련 문장 - Python String

  • 파이썬에서 여러 구분 기호를 기반으로 문자열을 분할하는 방법
  • 파이썬에서리스트를 문자열로 변환하는 방법