Skip to main content
 首页 » 编程设计

python之在 Python 中替换字符串中的字符

2025年05月04日20rubylouvre

正在为一项作业编写一个简单(非常简单,可笑的弱)密码程序,无论我采用哪种方式,我似乎都会遇到同样的错误。

 def cryptofied(text, dic): 
    for i, j in dic.items(): 
            text = text.replace(i, j) 
    return text 

编辑:现在使用 def 加密(文本,dic): 回复=“” 对于范围内的 p(len(文本)): ret += dic[文本[p]] 返回返回

和

def encode(codedMsg): 
    print(codedMsg, '   Here was your message to be encoded.') 
    lock = {'A':'X', 'B':'P', 'C':'M', 'D':'G', 'E':'T', 'F':'D', 'G':'H', 'H':'L', 'I':'Y', 'J':'O', 'K':'N', 'L':'Z', 'M':'B', 'N':'W', 'O':'E', 'P':'A', 'Q':'R', 'R':'K', 'S':'J', 'T':'U', 'U':'F', 'V':'S', 'W':'C', 'X':'I', 'Y':'Q', 'Z':'V'} 
    codedMsgTest = cryptofied(codedMsg, lock) 
    print(codedMsgTest, 'here is your coded message') 

但是,当我输入例如“frank”作为codedMsg 时,它会吐回“GKXCC”,这显然是不正确的。据我所知,问题在于它将“K”更改为“N”,然后将“N”的两个实例更改为“C”。我该怎么做才能消除这种情况?

编辑: 所以,现在这段代码的问题是,如果使用了一个不在我的锁中的字符,就会返回一个错误。我怎样才能忽略这些字符?

请您参考如下方法:

您可以使用索引遍历单词,然后一个接一个地修改它们,如下所示:

for i in xrange(len(text)): 
    text[i] = dic[text[i]] 

但是there is a method called maketrans(), which allows you to do exactly this .

import string 
s1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
s2 = "XPMGTDHLYONZBWEARKJUFSCIQV" 
trans = string.maketrans(s1,s2) 
strtrans = "THIS IS A SAMPLE PROGRAM FOR MAKETRANS" 
outstr = strtrans.translate(trans) 
print outstr      # ULYJ YJ X JXBAZT AKEHKXB DEK BXNTUKXWJ