Нужна помощь с регулярными выражениями в Python - PullRequest
0 голосов
/ 23 июля 2010

Помогите, пожалуйста, сделать из строки как:

<a href="http://testsite.com" class="className">link_text_part1 <em>another_text</em> link_text_part2</a>

как строку:

link_text_part1 another_text link_text_part2

используя регулярные выражения в Python

! Note testsite.com изменений

Ответы [ 4 ]

1 голос
/ 23 июля 2010
string = re.sub('<[^>]+>', '', string)
1 голос
/ 23 июля 2010

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

Легкий анализатор HTML, как правило, является более надежным и элегантным решением.

1 голос
/ 23 июля 2010

То есть вы хотите удалить теги <a> и <em>? Это можно сделать так:

>>> s = '<a href="http://testsite.com" class="className">link_text_part1 <em>another_text</em> link_text_part2</a>'

>>> re.sub("</?(a|em).*?>", "", s)
'link_text_part1 another_text link_text_part2'

В английском это ищет:

  • A <символ </li>
  • (необязательно, после) / (чтобы получить закрывающие теги)
  • , за которыми следуют 'a' или 'em'
  • с последующим указанием чего-либо, вплоть до первого> символа

и заменяет их пустыми строками.

Однако, как говорит Кос, использование регулярных выражений для анализа HTML очень рискованно и хрупко, если только вы не знаете, что формат разбираемого HTML никогда не изменится.

0 голосов
/ 25 июля 2010

КСТАТИ.Это помогло:

from scrapy.utils.markup import remove_tags  
...
bbb=remove_tags(aaa)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...