파이썬에서 문자열(string)은 인덱싱은 가능하나, 리스트와는 다르게 인덱스를 이용한 값 변경은 불가능하다.

따라서 지정된 함수를 이용해서 문자열을 변경해야 한다.

 

 문자열 변경 - replace('old','new')


a = 'I love Java'
a=a.replace('Java','Python')
print(a)

>>I love Python

 

 

문자열 내 문자 변경 - str.maketrans('old','new'), translate(table)


문자 변경은 문자열 변경과 다르게 두 가지 과정이 필요하다.

먼저 str.maketrans()를 이용하여 바꿀 문자와 새로운 문자 간의 변환 테이블을 만들어야 한다.(1대 1 대응)

그 후 문자를 변경하고 싶은 문자열을 대상으로 translate 함수를 사용하면 된다.

말이 어려운데 예시를 보자.

a = 'my name is duck'
table = str.maketrans('abcdefghi','123456789') #1대1대응
a = a.translate(table)
print(a)

>>my n1m5 9s 4u3k

위의 예시의 table을 출력해보면

table = str.maketrans('abcdefghi','123456789')
print(table)

>>{97: 49, 98: 50, 99: 51, 100: 52, 101: 53, 102: 54, 103: 55, 104: 56, 105: 57}

위와 같이 a:1, b:2, c:3 ... 가 아스키코드로 변환되어 딕셔너리 형태로 저장되어 있는 것을 볼 수 있다.

이 테이블을 이용하여 translate함수를 사용하면 

'my name is duck'이 'my n1m5 9s 4u3k'으로 변환되는 것을 볼 수 있다.

 

 

※str.maketrans()함수를 사용할 때는 꼭 두 인자의 길이가 같아야 한다!!!(위에서 말한 1대 1 대응)

+ Recent posts