본문 바로가기
파이썬/자주하는 질문

파이썬(Python) 문자열을 in-place로 수정하는 방법

by J-Build 2020. 9. 10.

파이썬의 문자열은 immutable 타입이기 때문에 in-place로 문자열을 수정할 수는 없습니다. 하지만 io.StringIO를 사용하면 in-place로 object의 문자열 수정이 가능합니다.

 

io.StringIO를 사용하는 방법은 다음과 같습니다. 

from io import StringIO

s = "J-Build is awesome!"
sio = StringIO(s)
s = sio.getvalue()	# sio의 문자열값을 읽습니다.
print(s)
# J-Build is awesome!

isinstance(s, str)	# s는 str 타입입니다.
# True

# 'awesome' 이후부터 내용을 수정하기 위해서는, 
# sio 오브젝트의 내부 포인터를 'awesome'의 시작 인덱스로 옮겨줘야 합니다. 
# 포인터를 옮겨주는것은 seek() 함수로 가능합니다. 

s.find('awesome')	# 먼저, s에서 'awesome'을 찾아서 시작인덱스를 가져옵니다. 
# 11

sio.seek(11)	# 그리고 sio의 포인터를 11번째로 옮깁니다. 
sio.write('coooooool!!!')	# 11번째 인덱스를 포함한 이후의 값을 'coooooool!!!' 문자열로 덮어씌우게 됩니다.
s = sio.getvalue()
print(s)
# J-Build is coooooool!!!

 

 

댓글