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)
解决方案
您的编码很难区分 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
推荐阅读
- snowflake-cloud-data-platform - 如何通过自定义 OAuth 集成连接到 Snowflake Web UI
- android - “字符串”类型不是“时间戳”类型的子类型
- python - Windows 上的 python 输入优化?(和Xbox指南按钮可能检测到?)
- google-cloud-platform - Cloud Functions 概览图表显示持续不断的错误流,而错误选项卡和日志不显示任何错误
- c++ - 修复以下场景中未解决的符号“public: void:__thiscall”错误
- sql-server - 检查 NVARCHAR 列是否可以转换为 VARCHAR 列
- css - 使用语义 UI 反应垂直对齐项目
- c# - 如何在 Xamarin 中将 View 绑定到 ViewCell
- angular - 如何在角度中同时使用 *ngIf 和条件?
- gitlab - 如何同时在所有项目中搜索代码?