加密解密程序开发:如何提取文本文件字符并通过字典密钥替换为对应值?
解决文本字符逐个匹配字典替换的加密/解密问题
嘿,我完全懂你的处境——手里有密码字典,也能读文件,但卡在了逐个字符匹配替换这一步对吧?其实这个操作没你想的复杂,我用Python给你举个具体的例子,一步步来:
首先明确两种场景的字典处理
- 加密场景:你的字典应该是「明文字符: 密文字符」的映射,比如:
cipher_dict = { 'a': 'k', 'b': 'p', 'c': 'x', ' ': '^', '!': '*' # 可以包含空格、标点等特殊字符 } - 解密场景:如果要把密文转明文,需要把字典反转成「密文字符: 明文字符」,用字典推导式就能快速搞定:
decipher_dict = {v: k for k, v in cipher_dict.items()}
核心步骤:读取→逐个处理→写入
读取文本文件
用with语句安全读取文件,自动处理文件关闭:with open('input.txt', 'r', encoding='utf-8') as input_file: original_text = input_file.read()这里
original_text是一个字符串,而字符串本身就是可迭代的,直接循环就能逐个取出字符。逐个字符匹配替换
用列表推导式高效处理每个字符,dict.get()方法完美解决「字符不在字典里」的情况(比如换行符、陌生标点),直接保留原字符:# 加密示例 encrypted_chars = [cipher_dict.get(char, char) for char in original_text] encrypted_text = ''.join(encrypted_chars) # 把列表转回字符串 # 解密示例 # decrypted_chars = [decipher_dict.get(char, char) for char in original_text] # decrypted_text = ''.join(decrypted_chars)写入结果文件
同样用with语句写入处理后的文本:with open('encrypted_output.txt', 'w', encoding='utf-8') as output_file: output_file.write(encrypted_text)
完整示例代码
把这些步骤整合起来,就是一个可运行的加密程序:
def encrypt_text(input_path, output_path, cipher_dict): # 读取文件 with open(input_path, 'r', encoding='utf-8') as f: text = f.read() # 处理每个字符 encrypted_text = ''.join([cipher_dict.get(char, char) for char in text]) # 写入结果 with open(output_path, 'w', encoding='utf-8') as f: f.write(encrypted_text) # 定义密码字典 my_cipher = {'a': 'm', 'b': 'n', 'c': 'o', ' ': '#', '.': '!'} # 调用函数加密 encrypt_text('my_input.txt', 'my_encrypted.txt', my_cipher)
这个思路的关键就是利用字符串的可迭代性,直接遍历每个字符,再结合dict.get()做安全的映射替换,既简单又高效。如果有特殊需求(比如区分大小写、处理非ASCII字符),只需要调整字典或者在遍历前做字符转换(比如char.lower())就行。
内容的提问来源于stack exchange,提问作者Nick Nasty
相关产品推荐
相关产品推荐

