3

我正在努力解析 craigslist RSS 提要以提取位置信息。

我使用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”

任何帮助是极大的赞赏!

4

2 回答 2

2

这是一些无效的语法。除非字符串被引用,否则您不能连接/格式化字符串。尝试:

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

prog = re.compile(addressStart + r'(.*?)' + addressEnd)
result = prog.match(string)
于 2011-09-08T05:04:07.400 回答
2

尝试search代替match(原因是该行以 a 开头,<但您定义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  '
于 2011-09-08T05:10:11.770 回答