python中maketrans和translate函数

maketrans是与translate配套使用的字符串函数,通过映射的方式返回内容。

目录

str.maketrans()

str.translate()

最后我们拿一个例子来具体说明:


str.maketrans()

看看官方的解释:

返回可用于str.translate()的转换表。
如果只有一个参数,则它必须是映射Unicode的字典,序号(整数)或字符到Unicode序号、字符串或None。然后,字符键将转换为序数。

如果有两个参数,则它们必须是长度相等的字符串,并且在生成的字典中,x中的每个字符都将映射到字符在y中的相同位置。

如果有第三个参数,则必须是字符串,其字符将在结果中映射为“None”。 

三种方法构建翻译表:

>>> table1 = {ord('1'): ord('a'), ord('2'): ord('b')}
>>> table1
{49: 97, 50: 98}
>>> table2 = str.maketrans({'1': 'a', '2': 'b'})
>>> table2
{49: 'a', 50: 'b'}
>>> table3 = str.maketrans('12', 'ab')
>>> table3
{49: 97, 50: 98}
>>> table4 = str.maketrans('12', 'ab', '中文')
>>> table4
{49: 97, 50: 98, 20013: None, 25991: None}

str.translate()

使用给定的翻译表替换字符串中的每个字符。

转换表,它必须是Unicode序数到Unicode序数、字符串或None。

该表必须通过_ugetItem _;实现查找/索引,例如:字典或列表。

如果此操作引发LookupError,则该字符为保持原样。将删除映射到“None”的字符。

使用上一节生成的 4 张翻译表进行翻译:

>>> '123中文'.translate(table1)
'ab3中文'
>>> '123中文'.translate(table2)
'ab3中文'
>>> '123中文'.translate(table3)
'ab3中文'
>>> '123中文'.translate(table4)
'ab3'

最后我们拿一个例子来具体说明:

黑客语(Leet)是从网络发展起来的一种文字书写方式。通常将英语中的字母替换为数字和特殊符号。这种方式被很多黑客组织所使用。

由于具有隐密性,所以它也广泛被用于密码中。使用Leet书写的密码,不会增加密码记忆的复杂度,但却可以提高密码的强度。

常见的转化规律有,5替换s,3替换e,4替换a,0替换o,1替换i等。例如,cats使用Leet书写,就变为c475。

 一个纯字母的密码就转化为字母、数字、特殊符号构成的复杂密码了。

table = ' '.maketrans(before, after),这条语句可以创建映射表,str.translate(table)语句可以将table中的字符按映射表中的顺序进行替换。

替换表如下:

0 1 3 4 5 6 7
o i  e a s g  t

写一个程序,用于破解一个加密的字符串。M4k3 G006l3 Y0ur H0m3p463! 

str1 = "M4k3 G006l3 Y0ur H0m3p463!"
before = '0134567'
after = 'oieasgt'
table = ''.maketrans(before, after)     #创建映射表
print(str1.translate(table))

输出:

 

  • 9
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java小白。。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值