我怎样才能只替换python字符串中的一些特定字符?

时间:2016-08-19 18:26:58

标签: python string replace

我想要替换字符串中的字符,但不能同时替换所有字符。例如:

s = "abac"

我想用所有这些选项替换字符串

"Xbac"
"abXc"
"XbXc"

我只知道正常的s.replace()函数,它将替换该角色的所有出现。有没有人有任何聪明的代码可以替换字符串中所有可能的字符选项?

4 个答案:

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