Метод Python re.sub()
re.sub()— это Pythonreфункция модуля длязамены совпавших элементов.
Он находит все совпадающие подстроки в строке и заменяет их указанным содержимым.
Значение слова: sub— это сокращение от substitute (заменять).
Базовый синтаксис и параметры
Формат синтаксиса
re.sub(pattern, repl, string, count=0, flags=0)
Описание параметра
- pattern: регулярное выражение для сопоставления
- repl: текст замены, который может быть строкой или функцией
- string: исходная строка
- count: максимальное количество замен; 0 означает заменить все
- flags: флаги регулярного выражения
Описание функций
- Возвращаемое значение: Возвращает новую строку после замены.
Примеры
Пример 1: Базовая замена
Пример
import re
text = "Python хорош, Python великолепен"
# Заменить Python на Java
result = re.sub(r'Python', 'Java', text)
print(result)
text = "Python хорош, Python великолепен"
# Заменить Python на Java
result = re.sub(r'Python', 'Java', text)
print(result)
Ожидаемый вывод:
Java is good, Java is great
Пример 2: Заменить указанное количество раз
Пример
import re
text = "Python хорош, Python великолепен"
# Заменить только первое вхождение
result = re.sub(r'Python', 'Java', text, count=1)
print(result)
text = "Python хорош, Python великолепен"
# Заменить только первое вхождение
result = re.sub(r'Python', 'Java', text, count=1)
print(result)
Ожидаемый вывод:
Java is good, Python is great
Пример 3: Замена с помощью регулярного выражения
Пример
import re
text = "My phone number is 138-1234-5678"
# Заменить средние 4 цифры номера телефона на ****
result = re.sub(r'\d{4}', '****', text)
print(result)
text = "My phone number is 138-1234-5678"
# Заменить средние 4 цифры номера телефона на ****
result = re.sub(r'\d{4}', '****', text)
print(result)
Ожидаемый вывод:
我的手机号是 138-****-5678
Пример 4: Использование ссылок на группы
Пример
import re
text = "2024-04-02"
# Поменять порядок года, месяца и дня
result = re.sub(r'(\d{4})-(\d{2})-(\d{2})', r'\3/\2/\1', text)
print(result)
text = "2024-04-02"
# Поменять порядок года, месяца и дня
result = re.sub(r'(\d{4})-(\d{2})-(\d{2})', r'\3/\2/\1', text)
print(result)
Ожидаемый вывод:
02/04/2024
Пример 5: Использование функции в качестве содержимого замены
Пример
import re
text = "3 яблока, 5 бананов, 8 апельсинов"
# Заменить числа на число + 1
def add_one(match):
return str(int(match.group()) + 1)
result = re.sub(r'\d+', add_one, text)
print(result)
text = "3 яблока, 5 бананов, 8 апельсинов"
# Заменить числа на число + 1
def add_one(match):
return str(int(match.group()) + 1)
result = re.sub(r'\d+', add_one, text)
print(result)
Ожидаемый вывод:
苹果4个,香蕉6个,橙子9个
Другие расширения
Модуль re в Python