ลบตัวอักษรที่ตรงกับรูปแบบ

Python:
ลบตัวอักษรที่ตรงกับรูปแบบ

วิธีการ:

import re

# สตริงตัวอย่าง
text = "Hello, World! 1234"

# ลบตัวเลขทั้งหมด
no_digits = re.sub(r'\d', '', text)
print(no_digits)  # ผลลัพธ์: "Hello, World! "

# ลบเครื่องหมายวรรคตอน
no_punctuation = re.sub(r'[^\w\s]', '', text)
print(no_punctuation)  # ผลลัพธ์: "Hello World 1234"

# ลบสระ
no_vowels = re.sub(r'[aeiouAEIOU]', '', text)
print(no_vowels)  # ผลลัพธ์: "Hll, Wrld! 1234"

ฟังก์ชันที่ฉันสร้างขึ้น

ฉันทำสิ่งนี้บ่อยพอที่จะรีแฟกทอร์มันเป็นฟังก์ชัน delete() ง่ายๆ นี้ นี่ยังเป็นการสาธิตที่ดีของ doctests:

def delete(string: str, regex: str) -> str:
    """
    >>> delete("Hello, world!", "l")
    'Heo, word!'

    >>> delete("Hello, world!", "[a-z]")
    'H, !'
    """
    return re.sub(regex, "", string)

การศึกษาลึกลงไป

การลบอักขระที่ตรงกับรูปแบบในข้อความมีรากฐานลึกซึ้งในวิทยาการคอมพิวเตอร์ ย้อนกลับไปยังเครื่องมือแรกๆ ของ Unix เช่น sed และ grep ใน Python, โมดูล re ให้ความสามารถนี้ โดยใช้นิพจน์ปรกติ—เครื่องมือที่ทรงพลังและหลากหลายสำหรับการประมวลผลข้อความ

ทางเลือกอื่นๆ สำหรับโมดูล re ประกอบด้วย:

  • วิธีการสตริง เช่น replace() สำหรับกรณีง่ายๆ
  • ไลบรารีบุคคลที่สาม เช่น regex สำหรับรูปแบบที่ซับซ้อนและการสนับสนุน Unicode ที่ดีกว่า

ภายใต้ฝาครอบ, เมื่อคุณใช้ re.sub(), ตัวแปลภาษา Python จะคอมไพล์รูปแบบเป็นชุดของไบต์โค้ด ซึ่งได้รับการประมวลผลโดยเครื่องจักรสถานะที่ทำการจับคู่รูปแบบโดยตรงกับข้อความนำเข้า การดำเนินการนี้อาจใช้ทรัพยากรมากสำหรับสตริงขนาดใหญ่หรือรูปแบบที่ซับซ้อน ดังนั้นการพิจารณาประสิทธิภาพเป็นสิ่งสำคัญสำหรับการประมวลผลข้อมูลขนาดใหญ่

ดูเพิ่มเติม