2016-08-19 82 views
-2

我想一次替换字符串中的字符,但不是所有的字符。例如:我怎样才能只替换一些python字符串中的特定字符?

s = "abac" 

我想与所有这些选项

"Xbac" 
"abXc" 
"XbXc" 

我只知道,在正常s.replace()函数,将替换字符出现的所有替换的字符串。有没有人有聪明的代码来取代字符串中所有可能的字符选项?

+0

你是指这些特定字母的任意组合吗?这听起来像正则表达式(https://docs.python.org/2/library/re.html)会做的伎俩,如果这是你的意思。 –

+0

正常[替换](https://docs.python.org/3/library/stdtypes.html#str。替换)仅在您未能提供可选的第三个(计数)参数时才会替换所有发生的事件。 – Anthon

+0

什么是输入数据?字符串“abac”,还有什么?问题不明确。 –

回答

0
string.replace(s, old, new[, maxreplace]) 

返回字符串s的一个副本,其中所有出现的子字符串old被新的替换。如果给出可选参数maxreplace,则会替换第一个maxreplace事件。 因此,如果maxreplace=1只有第一个字符被替换。

0

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()

0

有没有人有聪明的代码,将取代所有可能的 在字符串中的字符选项?

在Python中查看regular expressions

下面是一个例子:

import re 

s = "abac" 

re.sub('^a', 'X', s) 

# output = 'Xbac' 

这将取代与a启动所有字符串,并把一个X那里。

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 
相关问题