Python:从结果中提取数字

时间:2013-02-18 21:50:21

标签: python

我正在使用python脚本自动从imdb中提取评级,但我无法从结果中提取数字。

from pattern.web import URL
from pattern.web import plaintext
from pattern.web import decode_utf8
import re

def scrape_imdb(film):
    url = URL (film)
    s=url.download()
    decode_utf8(url.download(s))
    regels=re.compile(('"ratingValue">[0-9].[0-9]'))
    rating= regels.findall(s)
    rating2= rating[0:1]
    rating3= rating2.findall("[0-9"])

    regels2=re.compile ("<title>.*</title>")
    titel=regels2.findall(s)
    print titel, rating2

但这给了我一个错误。谁知道我做错了什么?

2 个答案:

答案 0 :(得分:3)

正如您在评论中写到的另一个答案:

  

我仍然得到:AttributeError:'list'对象没有属性'findall'

所以这似乎是你的问题。 re.findall会返回匹配列表,因此rating是一个列表。然后,当您执行rating2 = rating[0:1]时,将子列表分配给rating2,因此rating2本身也是一个列表(尽管有一个元素)。列表没有findall方法,因此失败。

您可能想要做的是在rating中的第一个结果上运行另一个正则表达式:

rating = regels.findall(s)
rating2 = rating[0] # only get the first element; a string
rating3 = re.findall("[0-9]", rating2)

答案 1 :(得分:0)

我相信你有一个错字:

rating3= rating2.findall("[0-9"])

应该是:

rating3= rating2.findall("[0-9]")