轻松python文本专题-maketrans和translate

场景:

过滤字符串的某些字符,我们从例子出发

>>> tb=str.maketrans ('abc','123')
>>> 'abcd'.translate (tb)
'123d'
>>> 'abcd+++a+b+cd'.translate (tb)
'123d+++1+2+3d'
>>> 

1.建立字符映射表,也就是maketrans方法所做的事情,它返回一个字符串的映射表,意思是:如果字符串里面出现a,那么它就会变成对应的1,如此类推,b->2,c->3

2.使用translate方法,将字符串里面的字符改掉

注意:

1.映射两遍的长度必须一致,不然报错,也就是说‘abc‘一定需要对于‘123‘或者‘234‘等,不能是‘abc‘对应‘12‘,这个时候就报错

>>> tb=str.maketrans ('abc','12')
Traceback (most recent call last):
  File "<pyshell#26>", line 1, in <module>
    tb=str.maketrans ('abc','12')
ValueError: the first two maketrans arguments must have equal length
>>> 

2.还需要注意的是,字符串的translate方法只接受一个参数,而bytes的translate方法是可以接收两个参数,而且第二个参数可以快速实现删除方法

>>> bytes_tb = bytes.maketrans(b'abcd', b'ABCD')
>>> b'abcdefg'.translate (bytes_tb,b'a')
b'BCDefg'
>>> 

下面列举一些translate的一些应用方法:(注意:为了快速实现删除,所以下面的方法都是用bytes的translate)

修改某些字符串:

>>> def AToB(seq,frm,to):
	if len(frm)<len(to) or len(frm)>len(to):return '映射字符长度不一致'
	else:
		bytes_tb = bytes.maketrans(frm,to)
		return seq.translate (bytes_tb)

>>> AToB(b'abcd',b'a',b't1')
'映射字符长度不一致'
>>> AToB(b'abcd',b'a1',b't')
'映射字符长度不一致'
>>> AToB(b'abcd',b'a',b't')
b'tbcd'
>>> 

删除某些字符串:

>>> def AToB(seq,delete):
	return seq.translate (None,delete)

>>> AToB(b'abcd',b'a')
b'bcd'
>>> 

保留某些字符:

>>> def AToB(seq,keep):
	delete=seq.translate (None,keep)
	return seq.translate (None,<span style="font-family: Arial, Helvetica, sans-serif;">delete</span>)

>>> AToB(b'abcd',b'a')
b'a'
>>> 

就说到这里,谢谢大家

------------------------------------------------------------------

点击跳转零基础学python-目录

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-08 08:39:48

轻松python文本专题-maketrans和translate的相关文章

轻松python文本专题-字符串开头或者结尾匹配

场景: 字符串开头或者结尾匹配,一般是使用在匹配文件类型或者url 一般使用startwith或者endwith >>> a='http://blog.csdn.net/raylee2007' >>> a.startswith ('http') True 注意:这两个方法里面的参数可以是str,也可以是元组,但是不可以是列表和字典 >>> a='http://blog.csdn.net/raylee2007' >>> a.starts

轻松python文本专题-字符串对齐

场景: 字符串对齐 python提供非常容易的方法,使得字符串对齐 >>> print("abc".center (30,'-')) -------------abc-------------- >>> print("abc".ljust (30)+'|') abc | >>> print("abc".rjust (30)) abc >>> 分别是center,ljust,r

轻松python文本专题-判断对象里面是否是类字符串(推荐使用isinstance(obj,str))

场景: 判断对象里面是否是类字符串 一般立刻会想到使用type()来实现 >>> def isExactlyAString(obj): return type(obj) is type('') >>> isExactlyAString(1) False >>> isExactlyAString('1') True >>> 还有 >>> def isAString(obj): try :obj+'' except:re

轻松python文本专题-去掉字符串前后空格

场景: 去掉字符串前后空格 可以使用strip,lstrip,rstrip方法 >>> a="abc".center (30) >>> a ' abc ' >>> b=a.lstrip () >>> b 'abc ' >>> c=a.rstrip () >>> c ' abc' >>> d=a.strip () >>> d 'abc' >

Python学习:maketrans和translate方法

1.string.maketrans(instr,outstr)  返回一个翻译表 调用maketrans函数时,完成了转换.例如string.maketrans('ABCD', 'abcd'),调用完成后该翻译表中的原"ABCD"的位置已被"abcd"替换. 2.str.translate(table,del) 将1中生成的转换表作为入参,对str中包含instr的部分转换成oustr,最终返回替换完成后的字符串 3.举例说明: import string ins

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

python对字符串的处理是比较高效的,方法很多.maketrans和translate两个方法被应用的很多,但是具体怎么用常常想不起来. 让我们先回顾下这两个方法吧: 1.s.translate(table,str) 对字符串s移除str包含的字符,剩下的字符串按照table里的字符映射关系替换.table可以理解为转换表,比较'a' -> 'A', 'b'->'B'. 2.tabel = string.maketrans('s1', 's2') s1 和 s2 的长度必须一致,maketr

IBM Python 技术专题

Python 技术专题 Python 是由 Guido van Rossum 开发的,可免费获得的.是一种非常高级的解释型语言.其语法简单易懂,而且面向对象的语义功能强大又灵活,Python 可以广泛使用并具有高度的可移植性.本专题内容包括可爱的 Python 系列.Python 探索系列.Python 扩展.使用 Python 进行各种应用开发等等. 可爱的 Python 系列 可爱的 Python:将 XML 和 Python 结合起来 介绍 Python 的 XML 工具 可爱的 Pyth

Python 文本解析器

Python 文本解析器 一.课程介绍 本课程讲解一个使用 Python 来解析纯文本生成一个 HTML 页面的小程序. 二.相关技术 Python:一种面向对象.解释型计算机程序设计语言,用它可以做 Web 开发.图形处理.文本处理和数学处理等等. HTML:超文本标记语言,主要用来实现网页. 三.项目截图 纯文本文件: Welcome to ShiYanLou ShiYanLou is the first experiment with IT as the core of online ed

python文本 拼接或合并字符串

python文本 拼接.合并字符串 场景: 拼接.合并字符串 在这个场景中,我们首先想到的当然是使用+或者+=将两个字符串连接起来 >>> a='a'    >>> b='b'    >>> c=a+b    >>> c    'ab'    >>> 如果整个程序只有两个字符串需要拼接,那没有问题 但是如果程序里面大量存在拼接,甚至需要循环拼接,这个时候性能问题就会出现 原因:字符串是不可原地修改的,改变一个字符串就