在玩python challenge的时候发现一个比较有趣的函数所以记下来。

  问题是这样的

  

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

#要把这东西按照g->i,f->h这样格式26个字母转换一遍才知道它要表达什么。

 一开始,博主只能用到自己想到的笨办法。

#-*- coding:utf-8 -*-
import string
alist="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"
blist=""
for i in alist:
if i in string.lowercase: #string.lowercase表示小写字母
if ord(i)>120:
i = chr(ord(i)-24)
else:
i= chr(ord(i)+2)
blist+=i
print blist
#i hope you didnt translate it by hand. thats what computers are for. doing it in by hand is inefficient and that's why this text is so long. using string.maketrans() is recommended. now apply on the url

笨办法用完之后看到提示,可以同string.maketrans()函数,度娘查了下。发现可以string.maketrans()和translate()配合十分好用,先上改装后的demo

#-*- coding:utf-8 -*-
import string
alist="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"
mapping=string.maketrans(string.lowercase,string.lowercase[2:]+string.lowercase[:2])
blist = alist.translate(mapping,'')
print blist
#i hope you didnt translate it by hand. thats what computers are for. doing it in by hand is inefficient and that's why this text is so long. using string.maketrans() is recommended. now apply on the url

改装之后十分精简,nice!

另外附上用到函数的语法。

mapping = string.maketrans('asdf','ASDF')
#maketrans函数主要用来创建一一对应关系,这里a->A,s->S,d->D,f->.
#再次强调是一一对应如果mapping = string.maketrans('asdf','ASD')则会报错。"ValueError:maketrans arguments must have same length"
#maketrans可以接受ord()值少于256的字符,可以是字母数字或者特殊符号,但是不可以中文 #使用str.translate()
test_string = "wo shi yi zhi cai niao!"
result = test_string.translate(mapping)
print result
#wo Shi yi zhi cAi niAo! 根据mapping把A大写了
result = test_string.translate(None,'o')
print result
#如果映射为None则不映射,直接删除字母'o'
result = test_string.translate(mapping,'o')
print result
#根据mapping映射,并删除字母o
result = test_string.translate(None)
print result
#不做任何操作,只是说明映射参数是require的即使是None

另外,博主用的是py2.7。不排除py3有新情况如果能有个中文映射就更好了。

string下的 maketrans和translate的更多相关文章

  1. python文本 maketrans和translate

    python文本 maketrans和translate 场景: 过滤字符串的某些字符,我们从例子出发 >>> tb=str.maketrans ('abc','123')    & ...

  2. lua string 下的函数

    字符串操作 string.gsub(mainString,findString,replaceString,num) 在字符串中替换.mainString 为要操作的字符串, findString 为 ...

  3. python学习(二十三) String(下) 分片和索引

    分片: 记住, 是开闭区间. a = "abcdef"print(a[:])print(a[1:])print(a[:3])print(a[-2])print(a[:-2])pri ...

  4. Python Challenge 过关心得(1)

    正式开始第1关,这一关的URL的特殊部分是map. 这关的图片上有一个本子,上面写着K→M,O→Q,E→G,稍微思索就能发现这几个字母都是按照字母表的顺序向后移动了两位,那么最投机取巧的方法就是把ma ...

  5. 闭包在python中的应用,translate和maketrans方法详解

    python对字符串的处理是比较高效的,方法很多.maketrans和translate两个方法被应用的很多,但是具体怎么用常常想不起来. 让我们先回顾下这两个方法吧: 1.s.translate(t ...

  6. python字符串(string)方法整理

    python中字符串对象提供了很多方法来操作字符串,功能相当丰富. print(dir(str)) [..........'capitalize', 'casefold', 'center', 'co ...

  7. Python String 方法详解

    官网文档地址:https://docs.python.org/3/library/stdtypes.html#string-methods 官网 公号:软测小生ruancexiaosheng 文档里的 ...

  8. Python笔记_第一篇_面向过程_第一部分_5.Python数据类型之字符串类型(string)

    关于Python的字符串处理也如其他语言一样属于重点中的重点,主要是牵扯到的函数和内容较为多和乱一些.关于什么是字符串,Python中的定义是:以单引号或者双引号括起来的任意文本. 1.   字符串的 ...

  9. python string module

    String模块中的常量 >>> import string >>> string.digits ' >>> string.letters 'ab ...

随机推荐

  1. 了不起的分支和循环02 - 零基础入门学习Python008

    了不起的分支和循环02 让编程改变世界 Change the world by program 上节课,小甲鱼教大家如何正确的打飞机,其要点就是:判断和循环,判断就是该是不该做某事,循环就是持续做某事 ...

  2. Javascript个人理解

    一. 生成对象的原始模式 假定我们把猫看成一个对象,它有"名字"和"颜色"两个属性. var Cat = { name : '', color : '' } 现 ...

  3. hdu 1546 Idiomatic Phrases Game

    http://acm.hdu.edu.cn/showproblem.php?pid=1546 #include <cstdio> #include <iostream> #in ...

  4. PHP CI框架下,如果配置NGINX(根目录和子目录两种模式)

    摸索了一会儿,先配置成功,再看看PATH_INFO之类的东东吧. A,根目录: location ~ \.php($|/) { root html; fastcgi_pass ; fastcgi_in ...

  5. The Most Wanted Letter

    The Most Wanted Letter You are given a text, which contains different english letters and punctuatio ...

  6. 数据结构之顺序表,c#实现

    using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using S ...

  7. MicrosoftSQLServer中的锁模式

    在SQL Server数据库中加锁时,除了可以对不同的资源加锁,还可以使用不同程度的加锁方式,即锁有多种模式,SQL Server中锁模式包括: 1.共享锁 SQL Server中,共享锁用于所有的只 ...

  8. MySQL数据库配置主从服务器实现双机热备

    转自:http://www.cnblogs.com/cchun/p/3712637.html 一.安装MySQL 说明:在两台MySQL服务器192.168.21.169和192.168.21.168 ...

  9. 自定义的string类

    头文件Hi_String.h #include<iostream> #include<string.h> using namespace std; class Hi_Strin ...

  10. jQuery 动画之 添加商品到购物车

    前台页面 <link href="MyCar.css" rel="stylesheet" /> <script src="../jq ...