2016-08-19 76 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 
相關問題