在python中替换字符串中的一个字符
在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',再加上后面的部分拼接在一起,形成一个新的字符串。