Я пытаюсь захватить все после тега </html> и удалить его, но мой код, похоже, ничего не делает. Does.replace() не поддерживает регулярное выражение?
Python
z.write(article.replace('</html>.+', '</html>'))
Я пытаюсь захватить все после тега </html> и удалить его, но мой код, похоже, ничего не делает. Does.replace() не поддерживает регулярное выражение?
Python
z.write(article.replace('</html>.+', '</html>'))
Нет. Регулярные выражения в Python обрабатываются модулем re
.
article = re.sub(r'(?is)</html>.+', '</html>', article)
Вы можете использовать модуль re
для регулярных выражений, но регулярные выражения, вероятно, переполнены тем, что вы хотите. Я могу попробовать что-то вроде
z.write(article[:article.index("</html>") + 7]
Это намного чище и должно быть намного быстрее, чем решение на основе регулярного выражения.
@Игнасио прав, +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}'
В этом конкретном случае, если использование модуля 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>