Найти - Пользователи
Полная версия: Правильное регулярное выражение
Начало » Python для новичков » Правильное регулярное выражение
1 2
Mutagena
Помогите составить правильное регулярное выражение.
Имеется текст такого вида:
разнообразный_текст разнообразный_текст<a href=“/projects/?category_id=61”>КАТЕГОРИЯ</a>разнообразный_текст разнообразный_текст
Необходимо получить слово КАТЕГОРИЯ из данного текста. Там, естественно, может находиться любое другое слово или фраза.
Я пишу так:
category_re = re.compile(r"""<a href="/projects/?category_id=[\d+]">(?P<category>\w+)</a>""")
description_all = r"""разнообразный_текст разнообразный_текст<a href="/projects/?category_id=61">КАТЕГОРИЯ</a>разнообразный_текст разнообразный_текст"""
cat = category_re.search(description_all)
caregory = cat.group("category")
Но получаю ошибку ‘NoneType’ object has no attribute ‘group’
Подскажите, как правильно.
expee
Попробуй так:

m = re.search('\?category_id=\d+">(?P<category>.*)<\/a>', t)
print m.group("category")
где t - твоя строка.
Mutagena
expee, не помогает.
Если это может дать какие-либо наводки, то переменную description_all получаю так:
description_all = getText(item.getElementsByTagName("description")[0].childNodes)
из рсс-ленты. Может в кодировках дело?
Андрей Светлов
А почему бы не попытаться загнать description еще раз в html parser.
Mutagena
Андрей Светлов, ну потому что это выглядит вот так:
<description><![CDATA[
Заказчик: <a href="http://www.weblancer.net/users/NBK/“>Alex Pasa (NBK)</a><br />Категория: <a href=”/projects/?category_id=9“>Дизайн сайтов</a><br />Бюджет: <b class=”unknown">?</b><br /><br />Есть сайт, с него нужно взять дизайн и подогнать под движок WorldPress.<br />
Адрес сайта после утверждения.<br />
Интересует цена работ и срок.<br />
Оплата по желанию, если местоположения исполнителя Киев возможна оплата налом.]]></description>
expee
Странно, что у тебя не работает:

>>> description_all = r"""разнообразный_текст разнообразный_текст<a href="/projects/?category_id=61">КАТЕГОРИЯ</a>разнообразный_текст разнообразный_текст"""
>>> import re
>>> m = re.search('\?category_id=\d+">(?P<category>.*)<\/a>', description_all)
>>> print m.group("category")
КАТЕГОРИЯ
>>>
Смотри, что у тебя там в этой переменной. Кодировки - врятли, т.к. в самой регулярке нет ничего на русском.
Андрей Светлов
Так отлично! Берем CDATA и его - в отдельный парсер. Какой-нибудь html5lib, чтобы поменьше слетал на non-wellformed html
o7412369815963
Mutagena
Помогите составить правильное регулярное выражение.
# coding: utf-8

import re

text = r"""разнообразный_текст разнообразный_текст<a href="/projects/?category_id=61">КАТЕ ГОРИЯ 1 </a>разно<a href="/projects/?category_id=61">КАТЕ ГОРИЯ 2</a>образный_текст разнообразный_текст"""

for i in re.findall(r'category_id=\d+">(.+?)</a>', text, re.DOTALL):
print i
результат:
КАТЕ ГОРИЯ 1 
КАТЕ ГОРИЯ 2
>Оплата по желанию, если местоположения исполнителя Киев возможна оплата налом.]]
с тебя жвачка :)
Mutagena
expee, заработало.
А как вытянуть из переменной вида:
Заказчик: <a href="http://www.weblancer.net/users/Alfeifer/">Ф. Олег (Alfeifer)</a><br />Категория: <a href="/projects/?category_id=9">Дизайн сайтов</a>, <a href="/projects/?category_id=33">Flash</a><br />Бюджет: <b class="unknown">?</b><br /><br />Для обновления дизайна наших сайтов: <noindex><a href="http://www.fxmtrade.com" target="_blank" rel="nofollow">www.fxmtrade.com</a></noindex> и <noindex><a href="http://www.fxmgroup.com" target="_blank" rel="nofollow">www.fxmgroup.com</a></noindex>, необходимы креативщики с умениеем флэш програмирования. Задача, сделать сайт более динамичным и ярким.<br /><br />Оформить надо только первую страницу всё остальное остаётся прежним. <br /><br />Прошу в Ваших предложениях указывать срок и стоимость Ваших услуг.<br />Окончательная договорённость будет осуществлена после детального рассмотрения объёма работы.
категорию и сам текст проекта?
cat = re.search('\?category_id=\d+">(?P<category>.+)<\/a>.*<br ><br />(?P<desription>)', description_all)
не работает.
magasoft
google it: beautiful soup, soupselect
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB