본문 바로가기
컴퓨터/Python

TypeError: 'type' object does not support item assignment

by ehong 2019. 11. 3.

 

특정 문자열 "XX + YY + ZZ"를 정규표현식으로 찾을 일이 있었는데, 정규표현식에서 '+'는 그 자체로 기능이 있기 때문에 '+'를 '\+'로 바꿔줘야 했다. 그래서 처음에 생각한 코드:

 

for idx, char in enumerate(string):
	if char == '+':
		string[idx] = "\+"

 

하지만 바로 나타난 것은 TypeError: 'type' object does not support item assignment

이유를 찾아보니 파이썬에서 string 타입은 immutable, 즉 변경 불가능하다는 얘기다. 그러면 새로운 스트링을 생성하는 수 밖에 없다.

 

new_string = ""
for char in string:
	if char == '+':
		new_string += "\+"
	else:
		new_string += char

 

+= 연산을 수행할 때마다 매번 새로운 string이 생성돼서 메모리 낭비가 되지 않을까하는 찝찝함이 있지만 일단은 이렇게 해결.

 

'컴퓨터 > Python' 카테고리의 다른 글

파이썬 split() 함수 및 rsplit() 함수  (0) 2019.11.04