TypeError: 'str' object does not support item assignment
string은 아이템 수정이 불가능하다는 뜻이다.
문자열은 인덱스로 접근도 가능하고 리스트와 같이 슬라이싱도 가능하다.
그럼 text의 1번 요소인 e를 a로 바꿔 'hallo'라는 결과를 얻을 수 있을까?
불가능하다.
도대체 assignment의 뜻이 뭐길래 이런 에러가 발생하는 것일까. 궁금해서 직접 검색해 보았다.
에러 메시지에서 assignment는 2번 '배정, 배치'를 의미하는 것으로 보인다.
즉, TypeError: 'str' object does not support item assignment = 문자열에서는 아이템 배치를 지원하지 않는다.
문자열 수정을 위해 리스트처럼 인덱스로 접근은 할 수 있지만 수정은 불가능한 것이다.
문자열에서 아이템을 바꾸고 싶다면 replace를 사용해야 한다. replace에서는 인덱스로 접근은 불가하고 직접 어떤 문자를 무엇으로 바꿀 것인지 지정해줘야 한다.
바뀔 문자(=old)와 바꿀 문자(=new)를 replace의 매개변수로 전달해 주면 된다.
'e'를 'a'로 바꾸고 싶으면 replace('e', 'a')와 같이 작성해 주면 된다.
replace의 또 다른 매개변수 count는 몇 번 바꿀지 변경 횟수를 정해주는 것이다.
'aaaaaaa'에서 'a'를 'o'로 바꾸려고 한다. 이때 word.replace('a', 'o')로 작성해주면 모든 'a'를 'o'로 바꾼다.
한 번만 바꾸고 싶으면 어떻게 해야 할까?
이렇게 바꾸고 싶은 횟수가 있을 경우에 count에 값을 지정해 주는 것이다. 1번만 바꾸기로 했으므로 1을 매개변수로 넘겨주면 맨 앞에 위치한 a만 o로 바뀐다.
3번 바꾸고 싶으면 3을 매개변수로 전달해 준다.