我试图将rss2.0提要中的title标记解析为该提要中每个条目的三个不同变量。使用ElementTree,我已经解析了RSS,这样我就可以用下面的代码打印每个标题[减去后面的)
]:
feed = getfeed("http://www.tourfilter.com/dallas/rss/by_concert_date") for item in feed: print repr(item.title[0:-1])
我把它包括在内是因为,正如你所看到的项目名称是一个repr()数据类型,我对此不太了解。在
交互窗口中的特定repr(item.title[0:-1])
print
ed如下所示:
'randy travis (Billy Bobs 3/21' 'Michael Schenker Group (House of Blues Dallas 3/26'
用户选择一个波段,我希望在将每个item.title
解析为3个变量(分别对应band、venture和date。。。或者可能是一个数组或者我不知道…)只选择与所选波段相关的那些。然后他们被发送到谷歌进行地理编码,但那是另一回事。在
我看过一些regex
的例子,我正在读这些例子,但是看起来很复杂。它是?我想也许这里有人会对如何用一种聪明的方式做这件事有一些见解。我应该使用re
模块吗?输出当前是repr()
s有关系吗?有更好的方法吗?我在想我应该使用一个循环(这是我的pseudo python,就像我正在写的注释):
list = bandRaw,venue,date,latLong for item in feed: parse item.title for bandRaw, venue, date if bandRaw == str(band) send venue name + ", Dallas, TX" to google for geocoding return lat,long list = list + return character + bandRaw + "," + venue + "," + date + "," + lat + "," + long else
最后,我需要在.csv(逗号分隔)文件中选择如下所示的条目:
band,venue,date,lat,long randy travis,Billy Bobs,3/21,1234.5678,1234.5678 Michael Schenker Group,House of Blues Dallas,3/26,4321.8765,4321.8765
我希望这个要求不过分。我会自己调查的,只是想我应该在这里发帖,以确保它得到答复。在
所以,问题是,如何最好地将feed
中的每个repr(item.title[0:-1])
解析为3个独立的值,然后将它们连接到一个.csv文件中?在
关于
repr(item.title[0:-1])
部分,不确定您是从哪里得到的,但是我很确定您可以简单地使用item.title
。您所要做的就是从字符串中删除最后一个字符,然后对其调用repr()
,但什么都不做。在您的代码应该如下所示:
编辑:将
list
替换为lines
作为变量名。list
是一个内置项,不应用作变量名。对不起的。在别让正则表达式吓跑你。。。这很值得学习。在
根据上面的示例,您可以尝试将尾部括号放回,然后使用以下模式:
要获取每个组的个体,只需在
^{pr2}$info
对象上调用它们:在这种情况下,regex的难点在于确保知道标题中所有已知的可能字符。如果“Michael Schenker Group”部分中有非alpha字符,则必须调整该部分的regex以允许它们。在
上面的模式分解如下,从左到右进行解析:
([\w\s]+)
:匹配任何单词或空格字符(加号表示应该有一个或多个这样的字符)。括号表示匹配项将作为一个组捕获。这是“迈克尔·申克集团”的一部分。如果这里可以有数字和破折号,您需要修改方括号之间的部分,这是集合的可能字符。在\(
:文字括号。反斜杠将转义圆括号,因为否则它将被视为正则表达式命令。这是字符串的“(”部分。在([\w\s]+)
:与上面的一样,但这次匹配的是“达拉斯蓝军之家”部分。在括号中,这样他们将被捕获为第二组。在^ {CD5>}:将数字3和26与中间的斜线匹配。在括号中,这样他们将被捕获为第三组。在
\)
:上面的右括号。在python对regex的介绍相当不错,您可能需要花一个晚上的时间来复习一下http://docs.python.org/library/re.html#module-re。另外,查看divinto Python,它有一个友好的介绍:http://diveintopython3.ep.io/regular-expressions.html。在
编辑:见下面的扎切拉蒂,他有一些不错的编辑。两个脑袋总比一个好!在
正则表达式是解决此问题的一个很好的解决方案:
作为一个补充说明,您可能需要查看用于处理RSS解析的Universal Feed Parser,因为提要有一个格式错误的坏习惯。在
编辑
关于你的评论。。。字符串偶尔被包装成“s”而不是“s”与您使用repr这一事实有关。字符串的repr通常用s分隔,除非该字符串包含一个或多个s,否则它使用“s”,这样就不必转义了:
^{pr2}$注意不同的引用样式。在
相关问题 更多 >
编程相关推荐