Аналогично ответу Джорджа Шулькина.
import re
suffixes = ['.com', '.co', '.in', '.net']
patterns = [re.compile(suffix) for suffix in suffixes]
def remove_suffixes(s: str) -> str:
for pattern in patterns:
s = pattern.sub("", s)
return s
# urls = ["google.com", ...
clean_urls = map(remove_suffixes, urls)
# or clean_urls = [remove_suffixes(url) for url in urls]
Возможно, вы захотите использовать понимание списка, поскольку во многих случаях оно может быть быстрее, чем map
.
Это имеет преимуществотакже скомпилировать регулярные выражения, которые могут быть лучше для производительности при использовании в цикле.
Или если вы решили использовать functools.reduce
,
from functools import reduce
def remove_suffixes(s: str) -> str:
return reduce(lambda s, pattern: pattern.sub("", s), patterns, s)