translate()函数及ROT13加密
translate()
以下实例展示了 translate()函数的使用方法:
#!/usr/bin/pythonfrom string import maketrans # 引用 maketrans 函数。 intab = "aeiou" outtab = "12345" trantab = maketrans(intab, outtab) str = "this is string example....wow!!!";print str.translate(trantab);
以上实例输出结果如下:
th3s 3s str3ng 2x1mpl2....w4w!!!
以上实例去除字符串中的 'x' 和 'm' 字符:
#!/usr/bin/pythonfrom string import maketrans # Required to call maketrans function. intab = "aeiou" outtab = "12345" trantab = maketrans(intab, outtab) str = "this is string example....wow!!!";print str.translate(trantab, 'xm');
以上实例输出结果:
th3s 3s str3ng 21pl2....w4w!!!
ROT13
套用ROT13到一段文字上仅仅只需要检查字元字母顺序并取代它在13位之后的对应字母,有需要超过时则重新绕回26英文字母开头即可[2]。A换成N、B换成O、依此类推到M换成Z,然后序列反转:N换成A、O换成B、最后Z换成M。
只有这些出现在英文字母里头的字元受影响;数字、符号、空白字元以及所有其他字元都不变。因为只有在英文字母表里头只有26个,并且26 = 2 × 13,ROT13函数是它自己的逆反:[2]
换句话说,两个连续的ROT13应用函式会回复原始文字(在数学上,这有时称之为对合(involution);在密码学上,这叫做对等加密(reciprocal cipher))。
转换可以利用查找表完成,如下例所示:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz |
NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm |
- import this
trantab = maketrans(str(this.d.values()),str(this.d.keys()))
#trantab = maketrans(str(this.d.keys()),str(this.d.values()))
z = 'fuck daipei'
z.translate(trantab)
Out[91]: 'shpx qnvcrv'