使用python正则表达式从Craigslist rss提要中提取地址

2024-10-06 09:42:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力解析craigslist的rss提要来提取位置信息。在

我使用feedparser将脚本解析为条目和条目描述。不幸的是,地址信息包含在描述部分的不规则标记中。在

地址包含在如下部分中:

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

Feedparser不喜欢那些CLTAGS。我尝试用regex捕获第一行如下所示:

^{pr2}$

……但那没用。我做错什么了?以下是我正在使用的rss源的链接'http://seatle.craigslist.org/see/apa/index.rss'

非常感谢任何帮助!在


Tags: 标记脚本信息city地址条目regionrss
2条回答

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

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

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

尝试使用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  '

相关问题 更多 >