2010-07-23 4 views
0

Помогите пожалуйста сделать из строки, как:Нужна помощь с регулярными выражениями в Python

<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

отметить testsite.com изменения

+3

Пожалуйста, не делайте этого с помощью регулярных выражений. Пожалуйста, используйте красивый суп. –

+0

Мне нужно получить данные (link/linktext), используя Scrapy grome, поиск google – Gennadich

+0

S.Lott: спасибо, прочтение об этом – Gennadich

ответ

1

Итак, вы хотите удалить e <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» или «em»
  • , за которым следует что-либо вплоть до первого символа>

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

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

+0

спасибо. но это не помогло с scrapy – Gennadich

1
string = re.sub('<[^>]+>', '', string) 
+0

спасибо. но это тоже не помогло – Gennadich

+0

вам, вероятно, нужен глобальный флаг. – bluesmoon

1

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

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

+0

спасибо, я запомню, что – Gennadich

0

BTW. Это помогло:

from scrapy.utils.markup import remove_tags 
... 
bbb=remove_tags(aaa) 
Смежные вопросы