Python替换函数
我想使用replace函数,但是我只想替换一个字符,而不是该字符的所有实例 例如: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
>>> 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,我最初也这么认为,然后我重读了这个问题并删除了我的答案:)