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

时间:2018-07-13 03:32:36

标签: python encryption

我目前正在研究加密解密程序。所以我有一个原始的字符串变量,然后使用字典将字符串转换为特殊字符串。现在,如果有人再次给我特殊的字符串,我该如何解密呢?我正在尝试此代码,但它不起作用。

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)

2 个答案:

答案 0 :(得分:0)

您的编码很难区分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

答案 1 :(得分:0)

我认为您不理解此代码。

对于dnory_reverse中的所有密钥(对于所有加密数字),请检查enc_str是否包含此密钥并将关联的解密数字附加到dec_list。

结论:您忘记了订单。

我认为您应该将dnory更改为此:

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

并在enc_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