这两个函数是在Python Challenge level 1中用到的,主要功能是对字符串的映射,真是没想到python还有这样的函数。。。

背景故事

level 1中,题目是字符串密码,很简单的一种加密方式,提示是

K->M
O->Q
E->G

仔细想一下就会发现,是把每一个字母的ascii值加2处理了,同时对密文处理实验后,发现其实yz映射成了ab

translate和maketrans函数

  • string.translate(s, table[, deletechars])或者str.translate(table[, deletechars])
    • 在字符串中删除所有在deletechars中的字符,并把剩下的字符按照table1内的映射关系进行映射
  • string.maketrans(from,to)
    • 生成translate()函数所需的table,注意fromto必须一样长。
  • 一个应用实例
s = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."
table = string.maketrans(string.ascii_lowercase,string.ascii_lowercase[2:]+string.ascii_lowercase[:2])
print(s.translate(table))

其中的string.ascii_lowercase'abcdefghijklmnopqrstuvwxyz',同样的也有string.ascii_letters string.ascii_uppercase string.digits等等,详细内容见官方文档

  1. 一个256字符长度的字符串,应该就是128个ASCII码值加上它的映射