파이썬의 문자열은 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!!!
'파이썬 > 자주하는 질문' 카테고리의 다른 글
파이썬(Python) yield 키워드 이해하기 (0) | 2020.09.11 |
---|---|
파이썬(Python) if __name__ == '__main__': 은 무엇일까? (0) | 2020.09.11 |
파이썬(Python) 2진수 10진수로 변환하기 (2) | 2020.09.10 |
파이썬(Python) 8진수 16진수 정수 표현하기 (0) | 2020.09.10 |
파이썬(Python) 전역변수 함수에서 접근방법 (0) | 2020.09.10 |
댓글