Python - 修改字符串



字符串修改是指更改字符串字符的过程。如果我们谈论在 Python 中修改字符串,我们谈论的是创建一个新字符串,它是原始字符串的变体。

在 Python 中,字符串str 类的对象)是不可变类型的。在这里,immutable 是指在内存中创建后无法就地修改的对象。与列表不同,我们不能覆盖序列中的任何字符,也不能直接向其插入或附加字符。如果我们需要修改一个字符串,我们将使用某些返回新字符串对象的字符串方法。但是,原始字符串保持不变。

我们可以使用以下任何技巧作为修改字符串的解决方法。

将 String 转换为 List

Python 中的 字符串 和 列表 都是序列类型,它们是可相互转换的。因此,我们可以将字符串转换为列表,使用 insert()append()remove() 等方法修改列表,然后将列表转换回字符串以获得修改后的版本。

假设我们有一个字符串变量 s1,其值为 WORD,我们需要将其转换为列表。对于这个操作,我们可以使用 list() 内置函数并在索引 3 处插入一个字符 L。然后,我们可以使用 str 类的 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 标准库构造数组对象。它将从字符串变量创建一个 Unicode 类型的数组。

在下面的示例中,我们使用 array module 来修改指定的字符串。


import array as ar

# initializing a string
s1="WORD"
print ("original string:", s1)

# converting it to an array
sar=ar.array('u', s1)

# inserting an element
sar.insert(3,"L")

# getting back the modified string
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