-
- makestrans()用法
- 语法: str.maketrans(intab, outtab]);
- Python maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,
- 第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
- 注:两个字符串的长度必须相同,为一一对应的关系。
- Python3.4 已经没有 string.maketrans()了,取而代之的是内建函数:
- bytearray.maketrans()、bytes.maketrans()、str.maketrans()
- """
- intab = "abcd"
- outtab = "1234"
- str_trantab = str.maketrans(intab,outtab)
- test_str = "csdn blog: http://blog.csdn.net/wirelessqa"
- print (test_str.translate(str_trantab)) # 3s4n 2log: http://2log.3s4n.net/wirelessq1
- """
-
- translate() 用法
- 根据参数 table 给出的表(包含 256 个字符)转换字符串的字符, 要过滤掉的字符放到 del 参数中。
- 语法:
- str.translate(table[, deletechars]);
- bytes.translate(table[, delete])
- bytearray.translate(table[, delete])
- 若给出了 delete 参数,则将原来的 bytes 中的属于 delete 的字符删除,剩下的字符要按照 table 中给出的映射来进行映射
- """
-
若 table 参数为 None,则只删除不映射
- print(b'http://www.csdn.net/wirelessqa'.translate(None, b'ts')) #b'
-
若 table 参数不为 NONE,则先删除再映射
- bytes_tabtrans = bytes.maketrans(b'abcdefghijklmnopqrstuvwxyz', b'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
- print(b'http://www.csdn.net/wirelessqa'.translate(bytes_tabtrans, b'ts')) #b'
- """
-
- 闭包: 它是个内层函数,由一个变量来指代,而这个变量对于外层包含它的函数来说是本地变量
- """
- def make_adder(addend):
-
def adder(augend): #adder为内层函数
-
return augend + addend
-
return adder
- a = make_adder(1) #产生一个闭包,addend 为 1,注意 return 的是 adder
- b = make_adder(2) #产生另一个闭包,addend 为 2,注意 return 的是 adder
- print (a(100), b(100)) #a(100)就相当于 adder(100),adden 之前为 1,因此返回 100+1
- """
-
- 对 translate 方法的简单封装,使用起来更加方便
- frm : intab
- to : outtab
- delete : 指定删除字符
- keep: 指定保留字符
- delete 和 keep 有重叠时,delete 优先
- """
- def my_translator(frm = b'', to = b'', delete = b'', keep = None):
-
if len(to) == 1:
-
to = to * len(frm) #如果to只有一个字符,将字符的数量跟frm相等,这样才能一一对应
-
#构建一个映射表
-
trans = bytes.maketrans(frm, to)
-
if keep is not None: #如果有保留字
-
allchars = bytes.maketrans(b'', b'') # 获取空映射表的所有字符
-
keep = keep.translate(allchars, delete) # 从keep中去除delete中包含的字符,即keep与delete有重合时,优先考虑delete
-
delete = allchars.translate(allchars, keep) # delete为从全体字符中除去keep,即不在keep的都删掉
-
# 闭包
-
def my_translate(s):
-
return s.translate(trans, delete)
-
return my_translate
-
测试 my_tranlator
-
只保留数字
- digits_only = my_translator(keep = b'0123456789')
- print(digits_only(b'http://www.csdn.net/wirelessqa 520520')) #b'520520'
-
删除所有数字
- no_digits = my_translator(delete = b'0123456789')
- print(no_digits(b'http://www.csdn.net/wirelessqa 520520')) #b'http://www.csdn.net/wirelessqa '
-
用*替换数字
- digits_to_hash = my_translator(frm = b'0123456789', to = b'*')
- print(digits_to_hash(b'http://www.csdn.net/wirelessqa 520520')) #b'http://www.csdn.net/wirelessqa ******'
-
delete 与 keep 有重合时的情况
- trans = my_translator(delete = b'20', keep = b'0123456789')
- print(trans(b'http://www.csdn.net/wirelessqa 520520')) # b'55'
近期热议
推荐标签 标签
-
Word
13 引用 • 41 回帖 • 2 关注
-
架构
142 引用 • 442 回帖 • 1 关注
我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。
- IPFS
-
导航
45 引用 • 177 回帖 • 1 关注
各种网址链接、内容导航。
-
SendCloud
2 引用 • 8 回帖 • 506 关注
SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。
-
Openfire
6 引用 • 7 回帖 • 120 关注
Openfire 是开源的、基于可拓展通讯和表示协议 (XMPP)、采用 Java 编程语言开发的实时协作服务器。Openfire 的效率很高,单台服务器可支持上万并发用户。
-
Kafka
36 引用 • 35 回帖 • 3 关注
Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。
-
DNSPod
6 引用 • 26 回帖 • 533 关注
DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。
-
Laravel
19 引用 • 23 回帖 • 739 关注
Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。
-
wolai
2 引用 • 14 回帖 • 2 关注
我来 wolai:不仅仅是未来的云端笔记!
-
游戏
187 引用 • 832 回帖
沉迷游戏伤身,强撸灰飞烟灭。
-
ZeroNet
1 引用 • 21 回帖 • 649 关注
ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。
-
H2
11 引用 • 54 回帖 • 671 关注
H2 是一个开源的嵌入式数据库引擎,采用 Java 语言编写,不受平台的限制,同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。
-
CSS
198 引用 • 543 回帖 • 1 关注
CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。
-
心情
59 引用 • 369 回帖
心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。
-
Ruby
7 引用 • 31 回帖 • 265 关注
Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。
-
SpaceVim
3 引用 • 31 回帖 • 111 关注
SpaceVim 是一个社区驱动的模块化 vim/neovim 配置集合,以模块的方式组织管理插件以
及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全,
语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱
即用的 Vim-IDE。 -
爬虫
106 引用 • 275 回帖
网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。
-
叶归
12 引用 • 56 回帖 • 23 关注
-
印象笔记
3 引用 • 16 回帖 • 2 关注
-
Markdown
172 引用 • 1538 回帖 • 1 关注
Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。
-
快应用
15 引用 • 127 回帖 • 2 关注
快应用 是基于手机硬件平台的新型应用形态;标准是由主流手机厂商组成的快应用联盟联合制定;快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台;以平台化的生态模式对个人开发者和企业开发者全品类开放。
-
Latke
71 引用 • 535 回帖 • 828 关注
Latke 是一款以 JSON 为主的 Java Web 框架。
-
Hprose
9 引用 • 17 回帖 • 641 关注
Hprose 是一款先进的轻量级、跨语言、跨平台、无侵入式、高性能动态远程对象调用引擎库。它不仅简单易用,而且功能强大。你无需专门学习,只需看上几眼,就能用它轻松构建分布式应用系统。
-
RabbitMQ
49 引用 • 60 回帖 • 352 关注
RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
-
笔记
311 引用 • 794 回帖
好记性不如烂笔头。
-
Sillot
汐洛彖夲肜矩阵(Sillot T☳Converbenk Matrix),致力于服务智慧新彖乄,具有彖乄驱动、极致优雅、开发者友好的特点。其中汐洛绞架(Sillot-Gibbet)基于自思源笔记(siyuan-note),前身是思源笔记汐洛版(更早是思源笔记汐洛分支),是智慧新录乄终端(多端融合,移动端优先)。
主仓库地址:Hi-Windom/Sillot
文档地址:sillot.db.sc.cn
注意事项:
- ⚠️ 汐洛仍在早期开发阶段,尚不稳定
- ⚠️ 汐洛并非面向普通用户设计,使用前请了解风险
- ⚠️ 汐洛绞架基于思源笔记,开发者尽最大努力与思源笔记保持兼容,但无法实现 100% 兼容
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于