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"
'Python > 알고리즘 기초' 카테고리의 다른 글
시간복잡도와 공간복잡도 (1) | 2024.01.14 |
---|---|
파이썬(Python) - 이분탐색(이진탐색) / bisect (0) | 2022.04.12 |
파이썬(Python) - 딕셔너리(dictionary) 원소 검색/추가/삭제 (0) | 2022.03.29 |
댓글