
เขียนโปรแกรมภาษา Python ตอนที่ 62 การใช้งานเมธอด maketrans()
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}
