我試圖用下面串列中每個串列的第二個字符替換字串“Mississippi”中的“i”、“s”和“p”。當替換本身列印時,它將用指定的字符替換所有字符,但它實際上只會替換我要替換的新字串中的第一個字符,而不是所有字符。(例如 Mlsslsslppl 而不是 Ml$$l$$lzzl)我真的不知道從這里去哪里來解決這個問題。
def substitutePairs(myString, pairsList):
for item in myString:
for separateList in pairsList:
for char in separateList:
if item == char:
replacement = separateList[1]
newString = myString.replace(item, replacement)
return newString
def main():
myString = "Mississippi"
pairsList = [['i', 'l'],['s', '$'],['p', 'z']]
print(substitutePairs(myString, pairsList))
if __name__ == "__main__":
main()
uj5u.com熱心網友回復:
您需要迭代地應用replace到先前的結果,以便您可以將所有替換累積到一個字串中。您只需要一個回圈即可pairs_list;replace將為您完成迭代的作業my_string。
>>> def subst_pairs(my_string, pairs_list):
... for x, y in pairs_list:
... my_string = my_string.replace(x, y)
... return my_string
...
>>> subst_pairs("Mississippi", [['i', 'l'],['s', '$'],['p', 'z']])
'Ml$$l$$lzzl'
uj5u.com熱心網友回復:
這看起來確實像是一份作業str.translate:
>>> 'Mississippi'.translate(str.maketrans('isp', 'l$z'))
'Ml$$l$$lzzl'
如果你真的有這樣一個串列(并且不能使用上面的),你仍然可以從中構建翻譯表:
def subst_pairs(my_string, pairs_list):
return my_string.translate({ord(k): v for k, v in pairs_list})
要么:
def subst_pairs(my_string, pairs_list):
return my_string.translate(str.maketrans(*map(''.join, zip(*pairs_list))))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/430391.html
上一篇:操作有條件渲染的元素
