【发布时间】:2013-12-08 18:24:52
【问题描述】:
我希望能够替换字符串的一部分,但我不需要它是要替换的特定字符,而是我想替换字符串的最后一部分。像 s[-1]。那我该怎么做呢?
【问题讨论】:
标签: python string replace numbers
我希望能够替换字符串的一部分,但我不需要它是要替换的特定字符,而是我想替换字符串的最后一部分。像 s[-1]。那我该怎么做呢?
【问题讨论】:
标签: python string replace numbers
字符串是不可变的,因此您不能就地“替换”字符。您将需要创建一个新字符串(通过对旧字符串进行切片并与任何内容连接),然后将其分配给某个东西,也许是在您的旧引用上。
foo = 'foo'
foo[:-1] + 'x'
Out[31]: 'fox'
foo
Out[32]: 'foo'
foo = foo[:-1] + 'x'
foo
Out[34]: 'fox'
【讨论】:
我认为最简单的解决方案是使用Explain Python's slice notation 并将字符串切片到您想要的位置。然后,你可以添加一个新的结局。
请看下面的演示:
>>> mystr = "abcde"
>>> mystr[:-1]+"x"
'abcdx'
>>>
【讨论】:
好吧,如果它只是最后一部分,可以使用以下内容:
new_string = old[:x] + "new bit"
这将返回第一部分的副本,并将其与新部分连接起来。但是,如果新位与要替换的部分长度相同,则可以避免复制。
【讨论】:
这是一种方法:
>>> a = "my damn strin"
>>> b = a[:-1]
>>> b = b + 'k'
>>> b
'my damn strik'
>>>
【讨论】:
进行字符串切片和连接可能是最好的方法,但如果您关心的话,这里有一种替代方法可能会更快。它使用一个 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
【讨论】: