Использование регулярного выражения python для извлечения адресов из RSS-канала Craigslist

Я рву на себе волосы, пытаясь разобрать RSS-канал Craigslist, чтобы извлечь информацию о местоположении.

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

адреса содержатся в разделе, который выглядит следующим образом:

<!-- CLTAG xstreet0=11832 se 318pl  -->
<!-- CLTAG xstreet1= -->
<!-- CLTAG city=auburn -->
<!-- CLTAG region=wa -->
11832 se 318pl 

Feedparser не любит эти CLTAGS. Моя попытка захватить первую строку с помощью регулярного выражения выглядела так:

addressStart = r'!-- CLTAG xstreet0='
addressEnd = r'-->'

prog = re.compile(addressStart(.*?)addressEnd)
result = prog.match(string)

...Но это не сработало. Что я делаю неправильно? вот ссылка на rss-канал, с которым я работаю, «http://seattle.craigslist.org/see/apa/index.rss»

Любая помощь приветствуется!


person foundatron    schedule 08.09.2011    source источник


Ответы (2)


Какой-то неверный синтаксис. Вы не можете объединять/форматировать строки, если строки не заключены в кавычки. Пытаться:

addressStart = r'!-- CLTAG xstreet0='
addressEnd = r'-->'

prog = re.compile(addressStart + r'(.*?)' + addressEnd)
result = prog.match(string)
person SingleNegationElimination    schedule 08.09.2011

Попробуйте search вместо match (причина в том, что строка начинается с <, но вы определили, что addressStart начинается с !. search находит совпадения в любом месте строки, а match находит совпадения только в начале. В качестве альтернативы вы могли бы переопределить addressStart чтобы содержать ведущее <.)

>>> import re;
>>> addressStart = r'!-- CLTAG xstreet0='
>>> addressEnd = r'-->'
>>> prog = re.compile(addressStart + "(.*?)" + addressEnd)
>>> string = "<!-- CLTAG xstreet0=11832 se 318pl  -->"
>>> result = re.search(prog, string)
>>> result
<_sre.SRE_Match object at 0x1004806c0>
>>> result.group(1)
'11832 se 318pl  '
person Ray Toal    schedule 08.09.2011