str.marktrans方法:生成一个dict表。对应翻译表(asc码格式),
如:t = str.maketrans(‘abcdefghi’, ‘123456789’,“abfgjk”) 返回:{97: None, 98: None, 99: 51, 100: 52, 101: 53, 102: None, 103: None, 104: 56, 105: 57, 106: None, 107: None}, 说明:比如第一个参数里面的第一个字符 asc码97的字符(a)对应为None(本来应该对应于第二个参数中的数字1,但是由于被第三个参数过滤了,所以对应成为了None,而第一个参数中的第三个字符asc码99的字符(c)对应的为第二个参数里面的数字3(数字3的asc码是51)…
translate方法:就是把原始str中每个字符用对照翻译表中字符对应替换掉,对应None的就表示删除
def test_maketrans_translate():
a
=str.maketrans
({1:'b',3:'d'})
print (type(a
),a
)
a
= str.maketrans
({'1': 'b', '3': 'd'})
print(type(a
), a
)
b
=str.maketrans
('abcdefg','1234567')
print(type(b
),b
)
c
= str.maketrans
('abcdefghi', '123456789',"abfgjk")
print("2=", type(c
), c
)
c
= str.maketrans
('ab', 'AB', "b")
print("3=" ,type(c
), c
)
import string
s1
= "abcdefg"
t1
= str.maketrans
('abc', 'ABC',)
print("4 替换:"+ s1
+"->",s1
.translate
(t1
))
t1
=str.maketrans
("","","abc")
print("5 删除:"+ s1
+"->",s1
.translate
(t1
))
s1
= "how old are you?I'm 10 years old."
t1
=str.maketrans
("","",string
.punctuation
)
print("原始句子:" + s1
)
print("删除标点:" + s1
.translate
(t1
) )
if __name__
== "__main__":
test_maketrans_translate
()