如何替换字典中所有出现的指定字符

2024-09-28 13:14:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在做一个加密解密程序。所以我有一个原始的字符串变量,然后我用字典把字符串转换成特殊的字符串。如果有人再给我一个特殊的字符串,我该怎么解密呢?我正在尝试这个代码,但它不工作

enc_str= "`~```~`~`````" # this is 0315
dnory = {'0': '~', '1': '~`', '2': '~``', '3': '~```', '4': '~````', '5': '~`````', '6': '~``````', '7': '~```````', '8': '~````````', '9': '~`````````'}

def decrypt(dnory,enc_str):
    dec_list = []
    dnory_reverse = dict([[v,k] for k,v in dnory.items()])
    for key in dnory_reverse :
        if(enc_str.find(key)>0) :
            dec_list.append(dnory_reverse[key])
    print(dec_list)

decrypt(dnory,enc_str)

Tags: key字符串代码in程序for字典this
2条回答

您的编码很难区分0和1。例如,如何表示3015

但是,对于1到9,以下代码就足够了:

print(''.join(str(len(i)) for i in enc_str.split('~')))

输出:

1315

如果您将密钥更改为:

dnory = {'0': '~', '1': '~`', '2': '~``', '3': '~```', '4': '~````', '5': '~`````', '6': '~``````', '7': '~```````', '8': '~````````', '9': '~`````````'}

…有一种方法可以让它像这样工作:

enc_str= "~```~`~`````"
print(''.join(str(len(i)) for i in enc_str.split('~')))

输出:

0315

我想你不懂这个密码

对于dnory\ U reverse中的所有密钥(对于所有加密的数字),检查enc\ U str是否包含此密钥,并将相关的解密数字附加到dec\ U列表中

结论:你忘记了秩序

我想你应该把dnory改成这样:

dnory = {'0': '~`', '1': '~``', '2': '~```', '3': '~````', '4': '~`````', '5': '~``````', '6': '~```````', '7': '~````````', '8': '~`````````', '9': '~``````````'}

并在enc\u str上使用split(“~”)来获取加密数字的列表

我想我不必描述接下来的步骤,但请记住,在dnory中有“~”,而在使用split()创建的列表中不存在

有用的链接: -https://www.tutorialspoint.com/python/string_find.htm -https://www.tutorialspoint.com/python/string_split.htm

PS公司 dict()不会按字母顺序对键进行排序,而是随机进行排序,因此您的代码会返回各种输出

# this is comment in Python
// not this

相关问题 更多 >

    热门问题