maketrans()
เป็นเมธอดสำหรับสร้าง Mapping Table เพื่อนำไปใช้กับเมธอด translate()
เพื่อแทนที่สตริง มีรูปแบบการใช้งานดังนี้
string.maketrans(x, y, z)
สำหรับพารามิเตอร์ทั้ง 3 ตัว มีรายละเอียดดังนี้
x
พารามิเตอร์ตัวแรก- ถ้าระบุพารามิเตอร์เพียงตัวเดียว ตรงนี้จะต้องระบุเป็น Dictionary ที่กำหนดการทำงานในการแทนที่ข้อความ
- ถ้าระบุพารามิเตอร์ 2 ตัวขึ้นไป ตรงนี้ต้องเป็นสตริงที่กำหนดตัวอักษรที่ต้องการให้แทนที่
y
พารามิเตอร์ตัวที่ 2 (มีหรือไม่มีก็ได้) ระบุเป็นสตริงที่มีความยาวเท่ากันกับพารามิเตอร์x
โดยตัวอักษรแต่ละตัวในพารามิเตอร์x
จะถูกแทนที่ด้วยตัวอักษรในพารามิเตอร์ y เรียงตามลำดับz
พารามิเตอร์ตัวที่ 3 (มีหรือไม่มีก็ได้) ระบุเป็นสตริงที่ประกอบด้วยตัวอักษรที่ต้องการลบออกจากสตริงต้นทาง
ตัวอย่างการใช้งานเมธอด maketrans()
ร่วมกับเมธอด translate()
str = "Cotlin Is Fantastic"
map = str.maketrans("C", "K")
print(str.translate(map))
Kotlin Is Fantastic
- บรรทัดที่ 3 สร้าง Mapping Table ให้แทนที่อักขระ “C” ด้วยอักขระ “K”
- บรรทัดที่ 5 เรียกใช้เมธอด
translate()
โดยส่ง Mapping Table ที่สร้างไว้ในบรรทัดที่ 3 เป็นอากิวเมนต์
สร้าง Mapping Table เพื่อแทนที่อักขระทีละหลายตัว
str = "Hi John!"
x = "hoJ"
y = "raK"
table = str.maketrans(x, y)
print(str.translate(table))
Hi Karn!
- บรรทัดที่ 4 สร้าง Mapping Table โดยให้แทนที่อักขระในตัวแปร
x
ด้วยอักขระในตัวแปรy
เรียงตามลำดับ- ตัวแปร
x
เก็บอักขระ “hoJ” ตัวแปรy
เก็บอักขระ “raK” ดังนั้น “h” จะถูกแทนที่ด้วย “r” “o” จะถูกแทนที่ด้วย “a” และ “J” จะถูกแทนที่ด้วย “K”
- ตัวแปร
กำหนดอักขระที่ต้องการลบออกจากสตริง
ถ้ามีอักขระใด ๆ ที่ต้องการให้ลบออกจากสตริง สามารถทำได้ด้วยการกำหนดอักขระเพิ่มเข้าไปในพารามิเตอร์ตัวที่ 3
str = "Hi John!"
x = "hoJ"
y = "raK"
z = "iH "
table = str.maketrans(x, y, z)
print(str.translate(table))
Karn!
- อักขระที่เก็บอยู่ในตัวแปร
z
ถูกกำหนดให้เป็นพารามิเตอร์ตัวที่ 3 ดังนั้น อักขระในสตริงต้นทางที่ตรงกับอักขระในตัวแปรz
จะถูกลบออก
เมธอด maketrans()
ถ้าไม่ได้ใช้ร่วมกับเมธอด translate()
จะคืนค่ากลับมาเป็น Dictionary ที่ประกอบด้วย Unicode แสดงการแทนที่ของอักขระแต่ละตัว
str = "Hi John!"
x = "hoJ"
y = "raK"
z = "iH "
print(str.maketrans(x,y,z))
{104: 114, 111: 97, 74: 75, 105: None, 72: None, 32: None}