使用Python拆分Twitter RSS字符串

2024-09-30 14:16:25 发布

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

我正在尝试使用Python解析Twitter RSS提要并将信息放入sqlite数据库中。下面是一个例子:

MiamiPete: today's "Last Call" is now up http://bit.ly/MGDzu #stocks #stockmarket #finance #money

我要做的是为主要内容创建一个列(Miami Pete…now up),为URL创建一个列(http://bit.ly/MGDzu),为标签创建四个单独的列(股票、股票市场、金融、货币)。我一直在琢磨怎么做。在

任何建议都将不胜感激!在

下面是我一直在使用的一些代码——你可以看到我最初尝试创建一个名为“tiny_url”的变量并对其进行拆分,看起来确实是这样做的,但这种微弱的尝试根本无法解决上面提到的问题。:)

^{pr2}$

Tags: 信息数据库httpsqlitetodaylybittwitter
3条回答

Twitter有一个api,在这里您可能更容易使用,http://apiwiki.twitter.com/Twitter-API-Documentation。在

您可以获得JSON或XML格式的结果,并使用许多Python库中的一个来解析结果。在

或者,如果您必须使用RSS,还有Python提要解析器,比如,http://www.feedparser.org/。在

你的数据驱动设计似乎有点缺陷。除非你所有的条目都有一个文本部分、一个url和多达4个标记,否则它是行不通的。在

您还需要将保存到数据库与解析分开。使用regexp(甚至字符串方法)可以轻松地完成解析:

>>> s = your_string
>>> s.split()
['MiamiPete:', "today's", '"Last', 'Call"', 'is', 'now', 'up', 'http://bit.ly/MGDzu', '#stocks', '#stockmarket', '#finance', '#money']
>>> url = [i for i in s.split() if i.startswith('http://')]
>>> url
['http://bit.ly/MGDzu']
>>> tags = [i for i in s.split() if i.startswith('#')]
>>> tags
['#stocks', '#stockmarket', '#finance', '#money']
>>> ' '.join(i for i in s.split() if i not in url+tags)
'MiamiPete: today\'s "Last Call" is now up'

不过,单表数据库的设计可能不得不取消。在

此外,还可以使用regexp解析字符串:

>>> s = (u'MiamiPete: today\'s "Last Call" is now up http://bit.ly/MGDzu '
         '#stocks #stockmarket #finance #money')
>>> re.match(r'(.*) (http://[^ ]+)', s).groups()
(u'MiamiPete: today\'s "Last Call" is now up', u'http://bit.ly/MGDzu')
>>> re.findall(r'(#\w+)', s)
[u'#stocks', u'#stockmarket', u'#finance', u'#money']

相关问题 更多 >

    热门问题