我正在做一個需要替換從用戶輸入中獲取的字母表中所有字母的東西,但我認為這樣做太長了。有一個更好的方法嗎?
我使用python 3,代碼中的b是輸入,點是要替換的串列的名稱
a1 = b.replace("a", dot[0])
a2 = a1.replace("b", dot[1])
a3 = a2.replace("c", dot[2])
a4 = a3.replace("d", dot[3])
a5 = a4.replace("e", dot[4])
a6 = a5.replace("f", dot[5])
a7 = a6.replace("g", dot[6])
a8 = a7.replace("h", dot[7])
a9 = a8.replace("i", dot[8])
#.... Continues
uj5u.com熱心網友回復:
str.translate只要您只需要替換單個字符,我們就可以使用字典中的替換。
dotmap = {'e':'3', 'o':'0', ...}
txt = 'Hello world'
replacements = txt.maketrans(dotmap)
ntxt = txt.translate(replacements)
哪個會回傳H3ll0 w0rld。
uj5u.com熱心網友回復:
我猜dot包含每個字母表的替換字符。你可以做類似的事情
import string
s = 'example'
dot = '12345'
for c, cnew in zip(string.ascii_lowercase, dot):
s = s.replace(c, cnew)
print(s) # prints '5x1mpl5'
說明:zip將小寫 ASCII 字符和替換字符配對。然后我們依次得到每一對作為c和cnew。s成為新字串并重復回圈,直到dot用盡任何一個或小寫字母。
uj5u.com熱心網友回復:
一個想法是將字符轉換為整數,將其加 1,然后將結果整數轉換為 char。您可以使用內置方法 ord 和 chr 來實作此目的。
prev=b
for i in range(26):
cur=prev.replace(chr(ord('a') i), dot[i])
prev=cur
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/466418.html
標籤:Python python-3.x
