str.maketrans()
方法
功能概述
str.maketrans()
是 Python 中字符串對象的一個靜態方法,用于創建一個字符映射轉換表。這個轉換表本質上是一個字典,它定義了字符之間的替換規則,后續可以被 str.translate()
方法使用,以實現字符串中字符的批量替換。
語法及參數
str.maketrans()
方法有三種不同的調用方式:
方式一:一個參數的情況
str.maketrans(table)
- 參數:
table
:必須是一個字典,字典的鍵是單個字符(字符串長度為 1),值可以是單個字符、字符串或者None
。當值是單個字符時,表示將鍵對應的字符替換為該值對應的字符;當值是字符串時,這種情況通常不常用,因為translate()
方法會將字符串視為單個字符處理;當值為None
時,表示刪除鍵對應的字符。
- 示例:
# 創建一個字符映射轉換表,將 'a' 替換為 'X',刪除 'b'
table = str.maketrans({'a': 'X', 'b': None})
print(table) # 輸出是一個字典,鍵是字符的 ASCII 碼值
#{97: 'X', 98: None} 后續使用translate方法時,遇到ASCII 碼97會轉化為X,遇到ASCII 碼98會刪掉元素s = 'abc'
new_s = s.translate(table)
print(new_s) # 輸出: Xc
方式二:兩個參數的情況
str.maketrans(from_str, to_str)
- 參數:
from_str
:必須是一個字符串,包含要被替換的字符。to_str
:必須是一個與from_str
長度相同的字符串,包含替換后的字符,且from_str
中的每個字符會依次對應to_str
中相同位置的字符。
- 示例:
# 創建一個字符映射轉換表,將 'abc' 分別替換為 'XYZ'
table = str.maketrans('abc', 'XYZ')
print(table)
#{97: 88, 98: 89, 99: 90}s = 'abc'
s = s.translate(table)
print(s)
#XYZ
方式三:三個參數的情況
str.maketrans(from_str, to_str, deletechars)
- 參數:
from_str
和to_str
的含義與兩個參數的情況相同。deletechars
:一個字符串,包含要從輸入字符串中刪除的字符。
- 示例:
# 創建一個字符映射轉換表,將 'abc' 分別替換為 'XYZ',并刪除 'd'
table = str.maketrans('abc', 'XYZ', 'd')
print(table)
#{97: 88, 98: 89, 99: 90, 100: None}
s = 'abcd'
s = s.translate(table)
print(s)
#XYZ
str.translate()
方法
功能概述
str.translate()
方法用于根據 str.maketrans()
方法創建的字符映射轉換表,對字符串中的字符進行批量替換或刪除操作。
語法及參數
str.translate(table)
- 參數:
table
:是由str.maketrans()
方法返回的字符映射轉換表。
- 示例:
# 使用兩個參數的 maketrans 創建轉換表
table = str.maketrans('abc', 'XYZ')
s = 'abcdef'
new_s = s.translate(table)
print(new_s) # 輸出: XYZdef# 使用三個參數的 maketrans 創建轉換表
table = str.maketrans('abc', 'XYZ', 'd')
s = 'abcdef'
new_s = s.translate(table)
print(new_s) # 輸出: XYZef
總結
str.maketrans()
方法的作用是創建字符映射轉換表,定義字符的替換和刪除規則;而 str.translate()
方法則根據這個轉換表對字符串進行實際的替換和刪除操作。通過這兩個方法的配合使用,可以方便地實現字符串中字符的批量處理。