【发布时间】:2012-02-08 05:44:11
【问题描述】:
我想使用替换功能,但我只想替换一个字符,而不是该字符的所有实例。
例如:-
>>> test = "10010"
>>> test = test.replace(test[2],"1")
>>> print test
>>> '11111' #The desired output is '10110'
有没有办法可以做到这一点?
【问题讨论】:
我想使用替换功能,但我只想替换一个字符,而不是该字符的所有实例。
例如:-
>>> 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'
还可以考虑 Ignacio 的 bytearray solution。
【讨论】:
字符串是不可变的,因此您永远无法找到仅替换字符串中的一个字符的方法。您应该使用数组来仅替换第 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]
【讨论】: