Python 如何就地修改字符串
不幸的是,您无法就地修改字符串,因为字符串是不可变的。只需从您想要从中收集的几个部分创建一个新字符串。但是,如果您仍需要具有修改就地Unicode数据的能力的对象,您应该使用以下选项:
- io.StringIO对象
- Array模块
让我们看看我们上面讨论的内容 –
返回一个包含缓冲区的全部内容的字符串
示例
在此示例中,我们将返回一个包含缓冲区的全部内容的字符串。我们有一个文本流StringIO –
import io
myStr = "Hello, How are you?"
print("String = ",myStr)
# StringIO is a text stream using an in-memory text buffer
strIO = io.StringIO(myStr)
# The getvalue() returns a string containing the entire contents of the buffer
print(strIO.getvalue())
输出
String = Hello, How are you?
Hello, How are you?
现在,让我们改变流的位置,写入新内容并显示
改变流的位置并写入新的字符串
示例
我们将看到另一个示例,并使用seek()方法改变流的位置。使用write()方法将在相同的位置写入新字符串−
import io
myStr = "Hello, How are you?"
# StringIO is a text stream using an in-memory text buffer
strIO = io.StringIO(myStr)
# The getvalue() returns a string containing the entire contents of the buffer
print("String = ",strIO.getvalue())
# Change the stream position using seek()
strIO.seek(7)
# Write at the same position
strIO.write("How's life?")
# Returning the final string
print("Final String = ",strIO.getvalue())
输出
String = Hello, How are you?
Final String = Hello, How's life??
创建一个数组并将其转换为Unicode字符串
示例
在这个示例中,使用array()创建一个数组,然后使用tounicode()方法将其转换为Unicode字符串-
import array
# Create a String
myStr = "Hello, How are you?"
# Array
arr = array.array('u',myStr)
print(arr)
# Modifying the array
arr[0] = 'm'
# Displaying the array
print(arr)
# convert an array to a unicode string using tounicode
print(arr.tounicode())
输出
array('u', 'Hello, How are you?')
array('u', 'mello, How are you?')
mello, How are you?