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字符序數,而對應的值可以是由多個字符構成的字符串。
新聞熱點
疑難解答