Функция sub в regex может принимать функцию в качестве аргумента repl.
📄 Из документации:
If repl is a function, it is called for every non-overlapping occurrence of pattern. The function takes a single match object argument, and returns the replacement string.
То есть для каждого совпадения будет вызвана функция для вычисления замены вместо замены на одну и ту же строку для всех совпадений.
Иными словами, для замены разных совпадений на разные строки не потребуется запускать re.sub() много раз для каждой строки замены. Достаточно определить функцию, которая вернёт строку для каждого из совпадений.
Описание слишком запутанное🤔, давайте лучше рассмотрим на простом примере:
Создаем карту замены. То есть какие строки на какие требуется менять.
remap = {
'раз': '1',
'два': '2',
'три': '3',
'четыре': '4',
'пять': '5',
}
Пишем функцию поиска строки для замены. Единственным аргументом будет объект re.Match.
Используя данные этого объекта мы вычисляем замену on-the-fly!
def get_str(match: re.Match):
word = match.group(1)
return remap.get(word.lower()) or word
Пример текста.
text = '''Раз Два Три Четыре Пять
Вместе будем мы считать
Пять Четыре Три Два Раз
Мы считать научим вас
'''
Теперь запускаем re.sub и вместо строки замены (repl) подаём имя функции.
(Данный паттерн ищет отдельные слова в тексте)
>>> print(re.sub(r'(\w+)', get_str, text))
1 2 3 4 5
Вместе будем мы считать
5 4 3 2 1
Мы считать научим вас
Думаю, достаточно наглядно 🤓
#libs#regex
📺- CONTROL DE AEROPUERTOS: USA -📺
Título original: To Catch a Smuggler
Género:#Reality
Temporadas: 9 📡
Año: 2020 - Presente
Origen: EEUU 🇺🇸
Tráiler: youtu.be/nzuvwHLShEQ
Sinopsis:
Una serie que explora las historias cargadas de intensidad y emociones protagonizadas por la patrulla aduanera de Estados Unidos en algunos de los aeropuertos más concurridos del mundo por millones de pasajeros diariamente. Desde el Aeropuerto Internacional de Los Ángeles, Aeropuerto La Guardia y el Aeropuerto John F. Kennedy, entre otros. Descubra cómo se capturan a estos traficantes y sus cargamentos escondidos en lugares nunca imaginados.
Disponible:Disney+
@SeriesClubHD
🎥- EL GRAN BRUNCH -🎥
Título Original: The Big Brunch
Género:#Reality
Temporadas: 1 📼
Año: 2022
Origen: EEUU 🇺🇸
Tráiler:dai.ly/x8fe8e2
Sinopsis:
The Big Brunch es una serie de competencias de cocina que celebra las voces culinarias más inspiradoras y desconocidas del país.
A los chefs se les ofrecerá la oportunidad de compartir sus historias y sus sueños comerciales, al mismo tiempo que competirán por un premio que les cambiará la vida. Todo mientras busca formas innovadoras y personales de redefinir lo que significa cenar entre las 11 a.m. y 3 p.m. La serie, además de dar a conocer chefs busca ser la oportunidad de que todo el mundo se dé cuenta de que tienen al menos un amigo, un familiar o un compañero de trabajo que es extraordinario en lo que hace y lo positivo que es, poder apoyarlo en la búsqueda de sus sueños.
Disponible:Max
@SeriesClubHD
📺- IN THE EYE OF THE STORM -📺
Título Original: In The Eye of the Storm
Género:#Reality
Temporadas: 1📡
Año: 2024
Origen: EEUU 🇺🇸
Tráiler: youtu.be/BdMJ3G9Otqw
Sinopsis:
Desde tornados hasta incendios forestales, las imágenes inmersivas capturan el epicentro de impactantes desastres naturales en tiempo real como nunca antes.
Disponible:Movistar+ | Max
@SeriesClubHD
📺- LA CASA DE EMPEÑOS -📺
Título original: Pawn Stars
Título Alternativo: Estrellas del Empeño
Género:#Reality#Comedia
Temporadas: 17 📡
Año: 2009 - Presente
Origen: EEUU 🇺🇸
Tráiler: youtu.be/S46rcW5ADV4
Sinopsis:
Rick Harrison y su familia poseen y dirigen una casa de empeños en Las Vegas. Compran, venden y tasan artículos de valor histórico.
Disponible:A Tres Player | TiviFy
@SeriesClubHD
🎥- CATFISH: MENTIRAS EN LA RED -🎥
Título Original: Catfish: The TV Show
Género:#Reality#Romántica#Drama#Documental
Temporadas: 9 📼
Año: 2012 - Presente
Origen: EEUU 🇺🇸
Tráiler:youtu.be/JbQyoH819rM
Sinopsis:
Nev Schulman y Max Joseph ayudan a las personas que se han enamorado en Internet a comprobar la autenticidad de la identidad de sus amantes.
Disponible:Pluto TV | Movistar+ | Paramount+
@SeriesClubHD