在python中替换字符串中的一个字符

18 投票
6 回答
26341 浏览
提问于 2025-04-15 18:39

在Python中,字符串是可变的吗?当我写 someString[3] = "a" 时,会出现一个错误:

类型错误:'str' 对象不支持项赋值

我明白为什么会这样(因为如果我写 someString[3] = "test",那显然也是不合法的),但是在Python中有没有办法做到这一点呢?

6 个回答

4

在较新的Python版本中,你可以使用内置的 bytearray 类型,它是可变的,也就是说你可以随意修改它。具体的使用方法可以查看标准库的文档。不过这里的“较新”指的是Python 2.6及以上版本,所以如果你用的是旧版本,就不能用这个方法。

在旧版本的Python中,你必须像上面提到的那样创建一个新的 str,因为字符串是不可变的,不能直接修改。通常这种方法比较容易理解,但有时候使用其他可变的序列类型(比如字符列表,或者可能的 array.array)也是合理的。不过 array.array 使用起来有点麻烦,通常不太推荐。

20

与其把你的值存储为字符串,不如用一个字符列表来存储:

>>> l = list('foobar')
>>> l[3] = 'f'
>>> l[5] = 'n'

如果你想把它转换回字符串以便显示,可以用这个方法:

>>> ''.join(l)
'foofan'

如果你需要一次一个字符地修改很多字符,这种方法会比每次都重新创建一个新字符串要快很多。

24

Python中的字符串是不可变的,这意味着你不能直接修改字符串中的某个字符或者某一部分。比如,如果你想把字符串中的某个字符换成别的字符,你需要创建一个新的字符串。你可以用类似这样的方式来做:someString[:3] + 'a' + someString[4:],也就是把字符串的前面三部分和新的字符'a',再加上后面的部分拼接在一起,形成一个新的字符串。

撰写回答