Python การใช้งานเมธอด maketrans()

Python การใช้งานเมธอด maketrans()

Python การใช้งานเมธอด 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}