我希望能够替换字符串的一部分,但我不需要它作为要替换的特定字符,而是我想替换字符串的最后一部分。像s [-1]。那我该怎么做?
答案 0 :(得分:1)
字符串是不可变的,因此您无法就地“替换”字符。您将需要创建一个新字符串(通过切换旧字符串并与任何内容连接),然后将其分配给某些内容,可能是您的旧引用。
foo = 'foo'
foo[:-1] + 'x'
Out[31]: 'fox'
foo
Out[32]: 'foo'
foo = foo[:-1] + 'x'
foo
Out[34]: 'fox'
答案 1 :(得分:0)
我认为最简单的解决方案是使用Explain Python's slice notation并将字符串切割到您想要的位置。然后,您可以添加新的结尾。
参见下面的演示:
>>> mystr = "abcde"
>>> mystr[:-1]+"x"
'abcdx'
>>>
答案 2 :(得分:0)
好吧,如果它只是最后一部分,可以使用类似的东西:
new_string = old[:x] + "new bit"
将返回第一部分的副本,并将其与新部分连接。但是,如果新位与要替换的部分长度相同,则可以避免复制。
答案 3 :(得分:0)
这是一种方法:
>>> a = "my damn strin"
>>> b = a[:-1]
>>> b = b + 'k'
>>> b
'my damn strik'
>>>
答案 4 :(得分:0)
进行字符串切片和连接可能是最好的方法,但是这是另一种方法,如果您关心它,可能会更快。它使用unsigned char数组,它本质上是一个可变字符串。
#!/usr/local/cpython-3.3/bin/python
import array as array_mod
string = b'sequence of characterx'
array = array_mod.array('B', string)
print(array)
array[-1] = ord(b's')
print(array)
HTH