Python 字符串加密
问题描述
给定一个字符串msg
,将该字符串加密secret
,再将加密后的字符串secret
解密decode_secret
。
具体做法
需要引入string
模块。
str.maketrans()
- 用于创建字符替换的映射表。
- 需要定义源字符
source
和目标字符output
的对应关系translate_table
。 - 在使用
str.maketrans(source, output)
时,source
和output
的长度
必须一致
,因为每个字符在source
中对应一个字符在output
中。
str.translate()
- 根据映射表
translate_table
对字符串进行字符替换或删除。 - 适用于加密、数据清理、文本标准化等多种场景。
- 在
translate()
操作中,未在映射表
中定义的字符将保持不变
。
import string
source = string.printable
output = string.printable[::-1]
# print(f"source: {source}")
print(f"type(source): {type(source)}")
# print(f"output: {output}")
print(f"type(output): {type(output)}")
translate_table = str.maketrans(source, output)
# print(translate_table)
print(f"type(translate_table): {type(translate_table)})")
msg = "Today is a good day."
secret = msg.translate(translate_table)
print(f"msg: {msg}\nsecret: {secret}")
decode_table = str.maketrans(output, source)
decode_secret = secret.translate(decode_table)
print(f"secret: {secret}\ndecode_secret: {decode_secret}")
运行效果如下:
type(source): <class ‘str’>
type(output): <class ‘str’>
type(translate_table): <class ‘dict’>)
msg: Today is a good day.
secret: 大家自己打印一下吧,博客上显示有问题。
secret: 大家自己打印一下吧,博客上显示有问题。
decode_secret: Today is a good day.
删除字符
source = ""
output = ""
delete_chars = "aeiou"
translation_table = str.maketrans(source, output, delete_chars)
msg = "Hello, World!"
secret = msg.translate(translation_table)
print(secret) # 输出: Hll, Wrld!
# 删除了所有元音字母 'a', 'e', 'i', 'o', 'u'。
感谢浏览,一起学习!