Задать вопрос
@r10d10

Как указать модификатор S в re.sub python?

Изначально у меня опыт на PHP был, чтобы удалить скрипты и оставить текст я делал там так:
<script>(.*?)<\/script>
Проверить можно тут
https://regex101.com/r/qnMjz7/1

Но это работает только если есть модификатор Single line. В пыхе они просто бувами после регулярки пишутся. Формально если в regex101 переключиться на язык Python то система показывает что всё работает. Если это перенести в скрипт:
var = re.sub(r'<script>(.*?)<\/script>', '', str(s))

То не работает. Я догадываюсь потому что модификатора Single line нет. Но как его тут правильно указать?

В re.findall они указываются так
re.findall( r'регулярка', html, re.M|re.I)
Но с re.sub так не сработало
  • Вопрос задан
  • 30 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
Maksim_64
@Maksim_64
Data Analyst
показал, бы что именно не сработало, ошибка или нет желаемого результата.

Напрмер,
re.findall(pattern, string, flags=0)

re.sub(pattern, repl, string, count=0, flags=0)

В первом случае ты указываешь именованный параметр flags, как позиционный, и он оказывается на правильной позиции, во втором случае его позиция на два больше. То есть при вызове метода sub нужно указывать flags как именованный парметр.
Ответ написан
@r10d10 Автор вопроса
Надо вместо
var = re.sub(r'<script>(.*?)<\/script>', '', str(s), re.S)


Указывать в явном виде с flags=
var = re.sub(r'<script>(.*?)<\/script>', '', str(s), flags=re.S)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы