Python에서 문자열의 여러 문자를 바꾸는 방법
-
파이썬에서 여러 문자를 바꾸기 위해
str.replace()
사용 -
re.sub()
또는re.subn()
을 사용하여 Python에서 여러 문자 바꾸기 -
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은 사용자를 위해 작업을 수행 할 수있는 기존 함수를 제공하며, 이는 직접 작업을 수행하는 것보다 훨씬 쉽습니다.
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedIn