python3.x和python2.x的translate与maketrans函数使用差异
2017-07-17 12:56
615 查看
下面让我们看一个简单的例子来说明字符串转换的过程:
2.X下的演示过程:
import string #导入string模块
map = string.maketrans(‘123’, ‘abc’) #建立映射表,将字符串中含有的’1’,’2’,’3’替换为’a’,’b’,’c’
s = ‘54321123789’ #转换前的字符串
s.translate(map) #用创建的映射表map转换字符串
‘54cbaabc789’ #转换后的字符串
map = str.maketrans(‘123’,’abc’)
s = ‘54321123789’
s.translate(map)
‘54cbaabc789’
import string
map = string.maketrans(‘123’, ‘abc’)
s = ‘54321123789’
s.translate(map, ‘78’) #除了转换,还要删除字符串中的字符’7’,’8’
‘54cbaabc9’ #转换后的字符串没有字符’7’,’8’
map = str.maketrans(‘123’,’abc’, ‘78’)#要删除的字符需要在这指定
s = ‘54321123789’
s.translate(map)
‘54cbaabc9’
import string
def translator(frm=”, to=”, delete=”, keep=None):
if len(to) == 1:
to = to * len(frm)
trans = string.maketrans(frm, to)
if keep is not None:
allchars = string.maketrans(”, ”)
delete = allchars.translate(allchars, keep.translate(allchars,delete))
def translate(s):
return s.translate(trans, delete)
return translate
import string
map = string.maketrans(‘123’, ‘abc’)
type(map)
2.X下的演示过程:
import string #导入string模块
map = string.maketrans(‘123’, ‘abc’) #建立映射表,将字符串中含有的’1’,’2’,’3’替换为’a’,’b’,’c’
s = ‘54321123789’ #转换前的字符串
s.translate(map) #用创建的映射表map转换字符串
‘54cbaabc789’ #转换后的字符串
3.X下的演示过程:
map = str.maketrans(‘123’,’abc’)
s = ‘54321123789’
s.translate(map)
‘54cbaabc789’
2.X使用了string的maketrans函数,而3.X使用了str的maketrans函数,除了这一点,使用方法是基本相同的。若指定字符串中要删除的字符时,使用就会略有不同,如下: 2.X下的演示过程:
import string
map = string.maketrans(‘123’, ‘abc’)
s = ‘54321123789’
s.translate(map, ‘78’) #除了转换,还要删除字符串中的字符’7’,’8’
‘54cbaabc9’ #转换后的字符串没有字符’7’,’8’
3.X下的演示过程:
map = str.maketrans(‘123’,’abc’, ‘78’)#要删除的字符需要在这指定
s = ‘54321123789’
s.translate(map)
‘54cbaabc9’
我在读《Python Cookbook》遇到了一个基于2.X版本的例子,如下
import string
def translator(frm=”, to=”, delete=”, keep=None):
if len(to) == 1:
to = to * len(frm)
trans = string.maketrans(frm, to)
if keep is not None:
allchars = string.maketrans(”, ”)
delete = allchars.translate(allchars, keep.translate(allchars,delete))
def translate(s):
return s.translate(trans, delete)
return translate
allchars应该是一个返回的映射表,为什么还可以调用translate方法,所以它应该是一个str类型,测试如下:
import string
map = string.maketrans(‘123’, ‘abc’)
type(map)
相关文章推荐
- Python2.x和3.x下maketrans与translate函数使用上的不同
- Python 3.x 字符串的makestrans函数和translate方法使用详解
- Python 3.x中使用print函数出现语法错误(SyntaxError: invalid syntax)的原因
- python 中闭包理解,及函数string.maketrans(),string.translate()
- Python——maketrans和translate方法,可以用来从string中替换和删除字符
- python 装饰器功能以及函数参数使用
- python 装饰器功能以及函数参数使用介绍
- Python:通过计算阶乘来学习lambda和reduce这两个函数的使用
- 【转】python 装饰器功能以及函数参数使用
- Python: 使用装饰器“@”取得函数执行时间
- Python 基础——字符串maketrans(),translate()
- [Python]使用 lambda 函数
- Python与 PHP使用递归建立多层目录函数
- 【python cookbook】简化字符串的translate 方法的使用
- Python学习:def函数的定义、使用及参数传递
- Python——maketrans和translate方法,可以用来从string中替换和删除字符
- python3.x 的urllib使用例子
- 使用Python+PIL查看两张相似图形的差异
- [转]可爱的 Python:: 使用 itertools 模块中的组合函数
- 使用Python+PIL查看两张相似图形的差异