可变字符串
说明
在 Python 中,字符串属于不可变对象,不支持原地修改,如果需要修改其中的值,智能创建新的字符串对象。
但是,经常我们确实需要原地修改字符串,可以使用 io.StringIO对象或 array 模块
import io
import array
def modify_string_inplace(s, new_content):
"""
在原地修改字符串的内容。
参数:
s: io.StringIO 或 array.array('u'),包含原始字符串的对象。
new_content: str,新的字符串内容。
返回值:
None,直接在对象中修改内容。
"""
if isinstance(s, io.StringIO):
s.seek(0) # 移动到文件开头
s.truncate() # 清空原有内容
s.write(new_content) # 写入新内容
elif isinstance(s, array.array):
s[:] = array.array('u', new_content)
def main():
# 使用 io.StringIO
original_string = "Hello, Python!"
s_io = io.StringIO(original_string)
print(f"原始字符串 (使用 io.StringIO): {s_io.getvalue()}")
new_content = "Hello, Java!"
modify_string_inplace(s_io, new_content)
print(f"修改后的字符串 (使用 io.StringIO): {s_io.getvalue()}")
# 使用 array.array
original_string_array = array.array('u', original_string)
print(f"原始字符串 (使用 array.array): {''.join(original_string_array)}")
modify_string_inplace(original_string_array, new_content)
print(f"修改后的字符串 (使用 array.array): {''.join(original_string_array)}")
if __name__ == "__main__":
main()
执行结果