ดีครับดอทคอม

เขียนโปรแกรมภาษา Python ตอนที่ 63 การแทนที่ String ด้วยเมธอด translate()

การแทนที่ String ด้วยเมธอด translate()

เขียนโปรแกรมภาษา Python ตอนที่ 63 การแทนที่ String ด้วยเมธอด 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))
  • บรรทัดที่ 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))
  • บรรทัดที่ 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))
  • บรรทัดที่ 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))
  • บรรทัดที่ 4 สร้างตัวแปร z เก็บอักขระที่ต้องการให้ลบ คือ “i” “H” และช่องว่าง ” “
  • บรรทัดที่ 5 ส่งตัวแปร z เป็นพารามิเตอร์ตัวที่ 3 ในเมธอด maketrans()

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