Python замена всех URL-адресов в строке на другие ссылки, исключая .png, .gif, .jpg, .jpeg
Поделитесь опытом, как добавить в строку исключения для окончаний URL-адресов для .png, .gif, .jpg, .jpeg ?
str = """
La-la-la https://example.ru https://example.jpg/
https://example.com/ la-la-la https://example.com/
la-la-la https://example.png/ la-la-la
"""
print (re.sub(r'http([^\.\s]+\.[^\.\s]*)+[^\.\s]{2,}' , f'https://oter.new.com', str)))```
Ответы (1 шт):
Автор решения: Andy Pavlov
→ Ссылка
Если нужны исключения по конкретному виду файлов:
import re
ext = ['jpg', 'jpeg', 'png', 'gif', ]
print(re.sub('https?://[^\s/?]+', lambda m: 'https://oter.new.com'
if m.group(0).lower().split('.')[-1] not in ext else m.group(0), text))
Если же нужно для большинства известных типов файлов, то можно так. Могу предложить такой вариант через сопоставление окончания домена с mime-типом, как более универсальный вариант:
import mimetypes
import re
print(re.sub('https?://[^\s/?]+', lambda m: 'https://oter.new.com'
if not mimetypes.guess_type('f.{}'.format(m.group(0).lower().split('.')[-1]))[0] else m.group(0), text))