Python - 修改字符串
字符串修改 指的是改变字符串字符的过程。如果我们在 Python 中谈论修改字符串,实际上是指创建一个原始字符串的变体的新字符串。
在 Python 中,字符串(str class 的对象)是不可变类型。这里,不可变指的是对象一旦在内存中创建,就无法就地修改。与 list 不同,我们不能覆盖序列中的任何字符,也不能直接向其插入或追加字符。如果需要修改字符串,我们将使用某些返回新 string 对象的字符串方法。然而,原始字符串保持不变。
我们可以使用以下任何技巧作为变通方法来修改字符串。
将字符串转换为列表
Python 中的字符串和列表都是 sequence 类型,它们可以相互转换。因此,我们可以将字符串转换为列表,使用 insert()、append() 或 remove() 等方法修改列表,然后将列表转换回字符串以获得修改后的版本。
假设,我们有一个字符串变量 s1,其值为 WORD,我们需要将其转换为列表。为此,我们可以使用内置函数 list(),并在索引 3 处插入字符 L。然后,我们可以使用 str class 的 join() 方法连接所有字符。
示例
下面的示例实际演示了如何将字符串转换为列表。
s1="WORD"
print ("original string:", s1)
l1=list(s1)
l1.insert(3,"L")
print (l1)
s1=''.join(l1)
print ("Modified string:", s1)
它将产生以下 输出 −
original string: WORD ['W', 'O', 'R', 'L', 'D'] Modified string: WORLD
使用 Array 模块
要修改字符串,使用名为 array module 的 Python 标准库构造一个 array 对象。它将从字符串变量创建一个 Unicode 类型的 array。
示例
在下面的示例中,我们使用 array 模块修改指定的字符串。
import array as ar
# 初始化一个字符串
s1="WORD"
print ("original string:", s1)
# 将其转换为 array
sar=ar.array('u', s1)
# 插入一个元素
sar.insert(3,"L")
# 获取修改后的字符串
s1=sar.tounicode()
print ("Modified string:", s1)
它将产生以下 输出 −
original string: WORD Modified string: WORLD
使用 StringIO 类
Python 的 io 模块定义了处理流的文件类。StringIO 类使用内存中的文本缓冲区表示文本流。从字符串获得的 StringIO 对象表现得像 File 对象。因此,我们可以对其执行读/写操作。StringIO 类的 getvalue() 方法返回一个字符串。
示例
让我们在以下程序中使用上述原理来修改字符串。
import io
s1="WORD"
print ("original string:", s1)
sio=io.StringIO(s1)
sio.seek(3)
sio.write("LD")
s1=sio.getvalue()
print ("Modified string:", s1)
它将产生以下 输出 −
original string: WORD Modified string: WORLD