我想要替换字符串中的字符,但不能同时替换所有字符。例如:
s = "abac"
我想用所有这些选项替换字符串
"Xbac"
"abXc"
"XbXc"
我只知道正常的s.replace()函数,它将替换该角色的所有出现。有没有人有任何聪明的代码可以替换字符串中所有可能的字符选项?
答案 0 :(得分:0)
string.replace(s, old, new[, maxreplace])
返回字符串s的副本,其中所有出现的substring old都替换为new。如果给出了可选参数maxreplace,则替换第一个maxreplace事件。
因此,如果maxreplace=1
仅替换第一个字符。
答案 1 :(得分:0)
You can still use replace()
仅替换字符的第一个 k 次出现,而不是一次替换所有字符。
string.replace(s,old,new [,maxreplace])
返回字符串
s
的副本,其中所有出现的子字符串old
都替换为new
。 如果提供了可选参数maxreplace
,则会替换第一个maxreplace
次出现。
所以你的例子可以通过以下方式完成:
'abac'.replace('a','X',1).replace('a','X',1)
>>> 'XbXc'
使用Python中的re
模块可以实现更复杂的模式,这允许使用正则表达式进行模式匹配,特别是使用re.sub()
。
答案 2 :(得分:0)
有没有人有任何能够取代所有可能的聪明代码 字符串中的字符选项?
在Python中查看regular expressions。
以下是一个例子:
import re
s = "abac"
re.sub('^a', 'X', s)
# output = 'Xbac'
这会替换以a
开头的所有字符串,并将X
放在那里。
答案 3 :(得分:0)
我设法用所有不同的组合替换字符串中的所有字符。虽然代码不是最有效的,它可以实现我想要的
def replaceall(s, n):
occurence = s.count(n)
alt = []
temp = s
for i in range(occurence):
temp2 = temp
for j in range(i,occurence):
temp2 = temp2.replace(n,"x",1)
alt.append(temp2)
temp = temp.replace(n,"!",1)
for i in range(len(alt)):
alt[i] = alt[i].replace("!",n)
return alt