我想一次替换字符串中的字符,但不是所有的字符。例如:我怎样才能只替换一些python字符串中的特定字符?
s = "abac"
我想与所有这些选项
"Xbac"
"abXc"
"XbXc"
我只知道,在正常s.replace()函数,将替换字符出现的所有替换的字符串。有没有人有聪明的代码来取代字符串中所有可能的字符选项?
我想一次替换字符串中的字符,但不是所有的字符。例如:我怎样才能只替换一些python字符串中的特定字符?
s = "abac"
我想与所有这些选项
"Xbac"
"abXc"
"XbXc"
我只知道,在正常s.replace()函数,将替换字符出现的所有替换的字符串。有没有人有聪明的代码来取代字符串中所有可能的字符选项?
string.replace(s, old, new[, maxreplace])
返回字符串s的一个副本,其中所有出现的子字符串old被新的替换。如果给出可选参数maxreplace,则会替换第一个maxreplace事件。 因此,如果maxreplace=1
只有第一个字符被替换。
You can still use replace()
只能取代第一个字符的出现,而不是同时出现所有字符。
与string.replace(S,旧,新[,maxreplace])
返回字符串
s
与子old
的所有出现由new
替代副本。 如果给出可选参数maxreplace
,则会替换第一个maxreplace
事件。
所以,你的例子可以通过以下方式实现:
'abac'.replace('a','X',1).replace('a','X',1)
>>> 'XbXc'
更为复杂的模式可以通过使用Python中re
模块,它允许模式使用正则表达式匹配来完成,尤其是与re.sub()
。
有没有人有聪明的代码,将取代所有可能的 在字符串中的字符选项?
在Python中查看regular expressions。
下面是一个例子:
import re
s = "abac"
re.sub('^a', 'X', s)
# output = 'Xbac'
这将取代与a
启动所有字符串,并把一个X
那里。
我设法用所有不同的组合替换字符串中的所有字符。虽然代码不是最有效的,但它做我想要的
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
你是指这些特定字母的任意组合吗?这听起来像正则表达式(https://docs.python.org/2/library/re.html)会做的伎俩,如果这是你的意思。 –
正常[替换](https://docs.python.org/3/library/stdtypes.html#str。替换)仅在您未能提供可选的第三个(计数)参数时才会替换所有发生的事件。 – Anthon
什么是输入数据?字符串“abac”,还有什么?问题不明确。 –