본문 바로가기
Python/알고리즘 기초

파이썬(Python) - 문자열에서 여러 문자 바꾸기

by Sunyoung95 2022. 3. 31.
Method
  • replace() : 문자열에서 한 문자를 다른 문자로 변경
  • re.sub() / re.subn() : 문자열에서 정규식에 맞는 문자들을 모두 변경
  • maketrans() / translate() : 1대1형식으로 여러 문자를 변경 및 삭제

→문자열은 인덱스로 조회는 가능하지만 직접적인 수정 및 삭제는 불가능하므로 위와 같은 방법으로 수정한다.

 

replace()
  • 특정문자를 대체할 때
  • 문자열.replace(문자열에서 교체할 문자, 일치하는 문자를 대체할 문자 , [교체할 횟수])
string = "hello hi hello good"

string2 = string.replace("hello", "Nope")
print(string2) # "Nope hi Nope good"

string3 = string.replace("hello", "Nope", 1)
print(string3) # "Nope hi hello good"
  • 교체할 횟수를 지정하지 않으면 문자열 전체에서 일치하는 문자를 바꾼다.

 

re.sub() / re.subn()
  • 정규표현식을 사용한 문자대체
  • re.sub(정규표현식, 대체할 문자, 바꿀 문자열) : 변환된 문자열만 반환
  • re.subn(정규표현식, 대체할 문자, 바꿀 문자열) : 변환된 문자열과 변환된 횟수를 튜플형태로 반환
import re

string = "asd123 qwe456 zxc789"

string2 = re.sub("[0-9]", "ㅎ", string)
print(string2)  # "asdㅎㅎㅎ qweㅎㅎㅎ zxcㅎㅎㅎ"

string3 = re.subn("[0-9]", "ㅎ", string)
print(string3)  # ("asdㅎㅎㅎ qweㅎㅎㅎ zxcㅎㅎㅎ", 9)

 

maketrans() / translate()
  • dictionary를 사용하여 1 : 1 형태로 문자열을 변환
  • 문자열.maketrans(문자열에서 교체할 문자, 일치하는 문자를 대체할 문자, 삭제할 문자열)
    • 입력한 매개변수를통해 1 : 1 딕셔너리를 생성
string = "abcdefghijklmnopqrstuwxyz"

transDict = string.maketrans("abc", "ABC", "xyz")
print(transDict)  # {97: 65, 98: 66, 99: 67, 120: None, 121: None, 122: None}
  • 문자열.translate(변환 딕셔너리) : dictionary를 통해 1대1로 문자열을 변환
    • maketrans로 딕셔너리를 생성하지 않고 직접 변환 딕셔너리를 생성할 수 도 있다
    • 하지만 1:1 로 매칭되어야 하므로 무조건 1글자 : 1글자 로 딕셔너리를 구성해야한다!
string = "abcdefghijklmnopqrstuwxyz"

transDict = string.maketrans("abc", "ABC", "xyz")
print(transDict)  # {97: 65, 98: 66, 99: 67, 120: None, 121: None, 122: None}

string2 = string.translate(transDict)
print(string2) # "ABCdefghijklmnopqrstuw"

 

댓글