Python.replace() регулярное выражение

Я пытаюсь захватить все после тега </html> и удалить его, но мой код, похоже, ничего не делает. Does.replace() не поддерживает регулярное выражение?

Python

z.write(article.replace('</html>.+', '</html>'))

Ответ 1

Нет. Регулярные выражения в Python обрабатываются модулем re.

article = re.sub(r'(?is)</html>.+', '</html>', article)

Ответ 2

Вы можете использовать модуль re для регулярных выражений, но регулярные выражения, вероятно, переполнены тем, что вы хотите. Я могу попробовать что-то вроде

z.write(article[:article.index("</html>") + 7]

Это намного чище и должно быть намного быстрее, чем решение на основе регулярного выражения.

Ответ 3

@Игнасио прав, +1, я просто приведу больше примеров.

Чтобы заменить текст с использованием регулярного выражения, используйте функцию re.sub:

sub (pattern, repl, string [, count, flags])

Он заменит невозвратные экземпляры pattern текстом, переданным как string. Если вам нужно проанализировать соответствие для извлечения информации об определенных захватах групп, для isntance вы можете передать функцию аргументу string. подробнее здесь.

<сильные > Примеры

>>> import re
>>> re.sub(r'a', 'b', 'banana')
'bbnbnb'

>>> re.sub(r'/\d+', '/{id}', '/andre/23/abobora/43435')
'/andre/{id}/abobora/{id}'

Ответ 4

В этом конкретном случае, если использование модуля re переполняется, как насчет использования метода split (или rsplit) как

se='</html>'
z.write(article.split(se)[0]+se)

Например,

#!/usr/bin/python

article='''<html>Larala
Ponta Monta 
</html>Kurimon
Waff Moff
'''
z=open('out.txt','w')

se='</html>'
z.write(article.split(se)[0]+se)

выводит out.txt как

<html>Larala
Ponta Monta 
</html>