python translate()
函数用于过滤(删除),翻译字符串。根据maketrans()函数给出的字符映射转换表来转换字符串中的字符。
注意:translate()函数是先过滤(删除),再根据maketrans()函数返回的转换表来翻译。
语法
str.translate(table)
bytes.translate(table, deletechars)
bytearray.translate(table, deletechars)
参数
- table:转换表,转换表是通过maketrans()函数转换而来。
- deletechars:字符串中要过滤(删除)的字符。
返回值
返回转换后的字符串
程序示例
#!/usr/bin/python
# coding=utf-8
s = "123456789abc"
s1 = b"123456789abc"
#只有参数x,且x为字典。
map1 = str.maketrans({"1":"a","2":"b","3":"c"})
#单字符"1" "2" "3"对应的Unicode编码值分别为:49,50,51
#制作翻译表,将 字符串s 中的单字符"1"替换为单字符"a",单字符"2"替换为单字符"b",一一对应。
print(map1,type(map1),ord("1"),ord("2"),ord("3")) #map1返回的是一个Unicode形式映射的字典
#只有参数x和参数y
map2 = str.maketrans("123","abc")
#单字符"1" "2" "3"对应的Unicode编码值如上,单字符"a" "b" "c"对应的Unicode编码值分别为:97,98,99
#制作翻译表,将字符串s中的单字符"1"替换为单字符"a",单字符"2"替换为单字符"b",一一对应
print(map2,type(map2),ord("a"),ord("b"),ord("c"))#map2返回的也是一个Unicode形式映射的字典
#有x,y,z三个参数
map3 = str.maketrans("123","abc","56k")
#字符串"123"和"abc"含义如上。字符串"567"为 字符串s 要删除的字符,即制作删除表。
#单字符"5" "6" "k"对应的Unicode编码值分别为:53,54,107
print(map3,type(map3),ord("5"),ord("6"),ord("k")) #map3返回的也是一个Unicode形式映射的字典
map4 = bytes.maketrans(b"123",b"abc")
print(type(b"123"),type(b"abc"),type(map4),map4)
print("\n")
map5 = bytearray.maketrans(b"123",b"abc")
print(type(b"123"),type(b"abc"),type(map5),map5)
print("\n\n")
print(s.translate(map1)) #将 字符串s 中的"123" 分别替换为 "abc"
print(s.translate(map2)) #将 字符串s 中的"123" 分别替换为 "abc"
print(s.translate(map3)) #先将 字符串s 中的字符 "5","6" ,"k"过滤(删除),再将 字符串s 中的"123" 分别翻译替换为 "abc"
print(s1.translate(map4))
print(s1.translate(map5))
print(s1.translate(map4,b"78b")) #先将s1中的b"78b" 过滤(删除),再将 s1 中的b"123" 分别翻译替换为 b"abc"
print(s1.translate(map5,b"9")) #先将s1中的b"9" 过滤(删除),再将 s1 中的b"123" 分别翻译替换为 b"abc"
程序运行结果:
{49: 'a', 50: 'b', 51: 'c'} 49 50 51
{49: 97, 50: 98, 51: 99} 97 98 99
{49: 97, 50: 98, 51: 99, 53: None, 54: None, 107: None} 53 54 107
b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0abc456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'
b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0abc456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'
abc456789abc
abc456789abc
abc4789abc
b'abc456789abc'
b'abc456789abc'
b'abc4569ac'
b'abc45678abc'
{49: 97, 50: 98, 51: 99}
{49: 97, 50: 98, 51: 99, 53: None, 54: None, 107: None}
abc456789abc
abc456789abc
abc4789abc
b'abc456789abc'
b'abc456789abc'
b'abc4569ac'
b'abc45678abc'