Python str.translate()函数是Python字符串类的内建函数之一,其作用是通过给定的转换表把字符串中包含在转换表中的每个字符用转换表中对应的字符进行替换,并返回一个新字符串。
官方文档给出的Python 3中的语法格式如下:
str.translate(table)
str 是需要进行转换的字符串。
该函数的参数table时字符映射表,该映射表是需要通过__getitem__()函数实现了索引的对象,如映射和序列。
映射表table可能由以下几种情形:
映射表能返回一个Unicode序数或字符串用于匹配一个或多个字符;
返回None值用于删除指定的字符;
引发LookupError异常用于匹配字符本身。
该函数的参数也可以由str.maketrans()函数给出,也可以使用字典类型实现映射。
该函数执行后返回处理后的字符串。
s = "I am a student"
t1 = str.maketrans({"a":"A"})
print(s.translate(t1))
t2 = str.maketrans("ae","AE")
print(s.translate(t2))
t3 = str.maketrans("ae", "AE","n")
print(s.translate(t3))
上面程序使用了Python中str.maketrans()函数来产生 table 参数,分别演示了str.maketrans()函数的三个参数的使用方法。
第1个例子是将字符串 s 中的字母“a”都转换成“A”,第2个例子中是把字符串 s 中的字母“a”和“e”分别转换成“A”和“E”,第3个例子是在第2个例子的基础上删除掉 s 中的字母“n”。
其输出结果如下:
I Am A student
I Am A studEnt
I Am A studEt
str.maketrans()函数的具体使用情况,请读者参阅:Python str.maketrans()函数。
若不使用str.maketrans()函数,就需要人工来构造映射表 table 。
下面使用例子来说明这个问题。
s = "I am a student"
t4 = {"a":"A","e":"E"}
print(s.translate(t4))
t5 = {ord("a"):ord("A"),ord("e"):ord("E")}
print(s.translate(t5))
t6 = {ord("a"):"A",ord("e"):"E"}
print(s.translate(t6))
t7 = {ord("a"):"A",ord("e"):"E",ord("n"):None}
print(s.translate(t7))
输出结果如下:
I am a student
I Am A studEnt
I Am A studEnt
I Am A studEt
从例子和输出结果可以看出,第1个例子中创建词典的形式并没有对返回的字符串产生任何影响,因为在table参数中要求构成字典的键是字符的Unicode字符的序数。其他情况都达到了应有目的。
当然,在映射表中,键值必须是单个字符的Unicode字符序数,而对应的值可以是由多个字符构成的字符串。
新闻热点
疑难解答