Удаление символов, соответствующих шаблону

Python:
Удаление символов, соответствующих шаблону

Как это сделать:

import re

# Пример строки
text = "Привет, мир! 1234"

# Удаление всех цифр
bez_cifr = re.sub(r'\d', '', text)
print(bez_cifr)  # Вывод: "Привет, мир! "

# Удаление пунктуации
bez_punktuacii = re.sub(r'[^\w\s]', '', text)
print(bez_punktuacii)  # Вывод: "Привет мир 1234"

# Удаление гласных
bez_glasnyh = re.sub(r'[aeiouAEIOU]', '', text)
print(bez_glasnyh)  # Вывод: "Првт, мр! 1234"

Моя пользовательская функция

Я делаю это достаточно часто, поэтому я рефакторил это в простую функцию delete(). Это также хороший пример использования doctests:

def delete(string: str, regex: str) -> str:
    """
    >>> delete("Привет, мир!", "л")
    'Привет, мир!'

    >>> delete("Привет, мир!", "[a-z]")
    'П, !'
    """
    return re.sub(regex, "", string)

Глубокое погружение

Практика удаления символов, соответствующих шаблону в тексте, имеет глубокие корни в информатике, восходящие к ранним инструментам Unix, таким как sed и grep. В Python модуль re предоставляет эту возможность, используя регулярные выражения — мощный и универсальный инструмент для обработки текста.

Альтернативы модулю re включают:

  • Методы строк, такие как replace() для простых случаев.
  • Сторонние библиотеки, такие как regex для более сложных шаблонов и лучшей поддержки Unicode.

Под капотом, когда вы используете re.sub(), интерпретатор Python компилирует шаблон в серию байт-кодов, обрабатываемых машиной состояний, которая выполняет сопоставление шаблонов непосредственно в входном тексте. Эта операция может быть ресурсоемкой для больших строк или сложных шаблонов, поэтому соображения производительности критически важны для обработки больших данных.

Смотрите также