一、maketrans简介
Python中提供了一个名为maketrans的字符串函数,可以用来生成一个字符映射表。该映射表可用于translate函数对字符串进行快速翻译或删除操作。
maketrans函数的基本语法如下:
str.maketrans(x[, y[, z]])
其中,x是用于指定要替换的字符串,y是用于指定替换的目标字符串,z是用于指定要删除的字符。x、y和z三个参数至少有一个是必须的。
例如:
transtable = str.maketrans('aeiou','12345') text = 'this is a test string' print(text.translate(transtable))
输出结果为:
th3s 3s 1 t2st str3ng
上面的代码中,将字符串text中的元音字母"a"、"e"、"i"、"o"和"u"分别替换成数字"1"、"2"、"3"、"4"和"5"。
二、maketrans的参数
maketrans函数有三个参数,分别是x、y和z,用来指定字符映射表的生成方式。
1. x和y参数
x和y参数分别指定要替换的字符和替换的目标字符。这两个参数的长度必须相等。如果y比x短,则其余字符将被直接删除。
例如:
transtable = str.maketrans('aeiou','123') text = 'this is a test string' print(text.translate(transtable))
输出结果为:
th3s 3s 2st str3ng
上面的代码中,由于y中只有三个字符,因此x中的最后两个字符"o"和"u"被直接删除了。
2. z参数
z参数指定了要删除的字符。如果同时指定了y参数,则z参数只删除在x中不存在的字符。
例如:
transtable = str.maketrans('aeiou','','st') text = 'this is a test string' print(text.translate(transtable))
输出结果为:
hi i a e ring
上面的代码中,将字符串text中的元音字母"a"、"e"、"i"、"o"和"u"删除,并且将字符串中的字母"s"和"t"删除。
三、maketrans常见用途
1. 快速替换字符串中的多个字符
使用maketrans可以快速地替换字符串中的多个字符,比如将全角字符替换成半角字符。
例如:
import string transtable = str.maketrans(string.whitespace, ' ' * len(string.whitespace), ',。!?;:“”‘’') text = ' 1234567890!?()【】{},。;:“”‘’\n\n\n\n\n\n\n\n\n\n今天天气真好,出去玩吧。' print(text.translate(transtable))
输出结果为:
1234567890!?\(\)\[\]\{\}\ \ \ \ \ \ \ \ 今天天气真好,出去玩吧.
上面的代码中,定义了一个字符映射表,用来将字符串中的全角空格、逗号、句号、感叹号、问号、分号、双引号、单引号、括号和括号中的文本,全部替换成半角字符。
2. 快速删除字符串中的指定字符
使用maketrans函数还可以快速地删除字符串中的指定字符,比如删除html标签中的所有内容。
例如:
transtable = str.maketrans('', '', '<>') text = 'test hello world