Python-修改字符串


在Python中,字符串(str类的对象)是不可变类型。不可变对象是可以就地修改的对象,即在内存中创建的对象。因此,与列表不同,序列中的任何字符都不能被覆盖,也不能向其中插入或追加字符,除非我们使用某种返回新字符串对象的字符串方法。

但是,我们可以使用以下技巧之一作为修改字符串的解决方法。

将字符串转换为列表

由于字符串和列表对象都是序列,因此它们是可以互换的。因此,如果我们将字符串对象转换为列表,请通过 insert()、append() 或 remove() 方法修改列表,并将列表转换回字符串,以获取修改后的版本。

我们有一个字符串变量 s1,其值为 WORD。使用 list() 内置函数,让我们将其转换为 l1 列表对象,并在索引 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

使用数组模块

要修改字符串,请构造一个数组对象。Python 标准库包含数组模块。我们可以从字符串变量中得到一个 Unicode 类型的数组。

import array as ar
s1="WORD"
sar=ar.array('u', s1)

数组中的项目具有从零开始的索引。因此,我们可以执行数组操作,例如追加、插入、删除等。让我们在字符 D 之前插入 L

sar.insert(3,"L")

现在,借助 tounicode() 方法,取回修改后的字符串

import array as ar

s1="WORD"
print ("original string:", s1)

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 对象的Behave类似于 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