Python การแทนที่สตริงด้วยเมธอด translate()

Python การแทนที่สตริงด้วยเมธอด translate()

Python การแทนที่สตริงด้วยเมธอด translate()

เมธอด translate() เป็นเมธอดสำหรับแทนที่อักขระในสตริง โดยใช้งานร่วมกับเมธอด maketrans() ซึ่งเป็นเมธอดสำหรับสร้าง Mapping Table กำหนดรูปแบบการแทนที่อักขระ หรือใช้งานร่วมกับ Dictionary ที่กำหนดรูปแบบการแทนที่อักขระ มีรูปแบบการใช้งานดังนี้

string.translate(table)

  • table คือพารามิเตอร์ที่รับค่าเป็น Mapping Table หรือ Dictionary อย่างใดอย่างหนึ่งที่กำหนดกฏการแทนที่อักขระ โดย
    • Mapping Table ได้จากเมธอด maketrans()
    • Dictionary คือตัวแปร Dictionary ที่กำหนดรูปแบบการแทนที่อักขระ ซึ่งต้องใช้รหัส ASCII แทนการกำหนดอักขระลงไปตรง ๆ

ใช้เมธอด translate() ร่วมกับ Dictionary

str = "Good morning Kim"

dict = {75:  80}

print(str.translate(dict))

# Good morning Pim
  • บรรทัดที่ 3 สร้างตัวแปร Dictionary กำหนดให้แทนที่ตัวอักษร “K” รหัส 75 ด้วยตัวอักษร “P” รหัส 80
  • บรรทัดที่ 5 เรียกใช้เมธอด translate() โดยส่ง Dictionary ที่สร้างไว้ เข้าไปเป็นอากิวเมนต์

ใช้เมธอด translate() ร่วมกับ Mapping Table

การใช้งานเมธอด translate() ร่วมกับ Mapping Table ต้องสร้าง Mapping Table ขึ้นมาก่อน โดยใช้เมธอด maketrans() แล้วเรียกใช้เมธอด translate() โดยส่ง Mapping Table เข้าไปเป็นอากิวเมนต์

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 เพื่อแทนที่อักขระทีละหลายตัว

เราสามารถใช้เมธอด maketrans() สร้าง Mapping Table เพื่อแทนที่อักขระทีละหลาย ๆ ตัวได้ โดยกำหนดพารามิเตอร์ตัวแรกกับตัวที่ 2 ให้มีความยาวเท่ากัน ระบุอักขระที่จะต้องถูกแทนที่ และอักขระที่จะใช้แทนที่ลงไป

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”

ลบอักขระบางตัวออกจากสตริง

ถ้าต้องการลบอักขระบางตัวออกจากสตริง ในขั้นตอนการสร้าง Mapping Table ให้ระบุพารามิเตอร์ตัวที่ 3 กำหนดอักขระที่ต้องการให้ลบ

str = "Hi John!"
x = "hoJ"
y = "raK"
z = "iH "
table = str.maketrans(x, y, z)
print(str.translate(table))

# Karn!
  • บรรทัดที่ 4 สร้างตัวแปร z เก็บอักขระที่ต้องการให้ลบ คือ “i” “H” และช่องว่าง ” “
  • บรรทัดที่ 5 ส่งตัวแปร z เป็นพารามิเตอร์ตัวที่ 3 ในเมธอด maketrans()

อักขระที่ตรงกับอักขระในตัวแปร z ก็จะถูกลบออกไป