Python替换函数

Python替换函数,python,string,replace,Python,String,Replace,我想使用replace函数,但是我只想替换一个字符,而不是该字符的所有实例 例如: >>> test = "10010" >>> test = test.replace(test[2],"1") >>> print test >>> '11111' #The desired output is '10110' 有办法吗?否。str.replace()替换该字符的所有实例。改用bytearray >>> t

我想使用replace函数,但是我只想替换一个字符,而不是该字符的所有实例

例如:

>>> test = "10010"
>>> test = test.replace(test[2],"1")
>>> print test
>>> '11111' #The desired output is '10110'
有办法吗?

否。
str.replace()
替换该字符的所有实例。改用
bytearray

>>> test = bytearray('10010')
>>> test[2] = '1'
>>> str(test)
'10110'

没有内置的解决方案。但这里有一个简单的函数:

>>> def replace_one_char(s, i, c):
...     return s[:i] + c + s[i + 1:]
... 
>>> replace_one_char('foo', 1, 'a')
'fao'

也考虑伊格纳西奥。

字符串不是可变的,因此永远找不到替换字符串的一个字符的方法。您应该使用数组来仅替换第n个元素

替换字符串的工作方式如下:

mystr = "mystr"
mystr.replace('t','i',1)
'mysir'

print mystr
mystr

可能是您需要的,也可能不是。

不幸的是,python中的字符串是不可变的,因此您必须使用几种变通方法之一才能做到这一点

前面提到的字节数组方法将起作用

您还可以将字符串作为列表使用:

    s = list("10010")
    s[2] = '1'
    test = "".join(s)
拆分是另一种选择:

    s = '10010'
    s = s[:2] + '1' + s[3:]
最后,还有一些人提到的string.replace。虽然可以指定要替换的子字符串的实例数,但不能用它替换任意子字符串,因此它将不适用于您的目的

test = "10010"
test = test.replace(test[2],"1")
print test
'11111' #The desired output is '10110'
你可以这样做

test2= test[0:1]+"1"+test[3:4]

如果提供可选参数“maxreplace”,str.replace也可以替换任意数量的子字符串。@ktodisco:当然,但这在这里没有帮助,因为它总是从被替换字符串实例的开头开始计算,第二个实例必须更改。@ktodisco,我最初也这么认为,然后我重读了这个问题并删除了我的答案:)