迭代Nonetype对象

时间:2016-01-29 12:20:58

标签: python object nonetype

我想深入了解一些统计数据,并编写一些代码。

import urllib2
import HTMLParser

response = urllib2.urlopen('http://www.eia.gov/dnav/pet/hist/LeafHandler.ashx?n=PET&s=MCESTUS1&f=M')
data = response.read()


class TableParser(HTMLParser.HTMLParser):
    def __init__(self):
        HTMLParser.HTMLParser.__init__(self)
        self.in_td = False

    def handle_starttag(self, tag, attrs):
        if tag == 'td':
            self.in_td = True

    def handle_data(self, data):
        if self.in_td:
            print data

    def handle_endtag(self, tag):
        self.in_td = False

p = TableParser()
raw_data = p.feed(data)

 raw_list = []
 for string in raw_data:
     raw_list.append(string)

 print raw_list

此脚本的一些输出/

2015
421,472
448,039
474,815
483,379
479,335
469,539
455,470
457,810
460,786
486,700

-
Release Date: 12/31/2015
Next Release Date: 1/29/2016
Traceback (most recent call last):
  File "FirstData.py", line 28, in <module>
    for string in raw_data:
TypeError: 'NoneType' object is not iterable

这项工作,但我不能首先遍历Nonetype对象。

第二,我如何将这些数据放入大熊猫的月份和数量的图表中?

1 个答案:

答案 0 :(得分:0)

看起来解析器解析但您需要通过除p.feed(data)的返回值以外的其他方法从解析器中获取数据,因为它始终是None。如何将它累积在作为解析器对象属性的列表中:

import urllib2
import HTMLParser

response = urllib2.urlopen('http://www.eia.gov/dnav/pet/hist/LeafHandler.ashx?n=PET&s=MCESTUS1&f=M')
data = response.read()


class TableParser(HTMLParser.HTMLParser):
    def __init__(self):
        HTMLParser.HTMLParser.__init__(self)
        self.in_td = False
        self.raw_data = []

    def handle_starttag(self, tag, attrs):
        if tag == 'td':
            self.in_td = True

    def handle_data(self, data):
        if self.in_td:
            print data
            self.raw_data.append(data)

    def handle_endtag(self, tag):
        self.in_td = False

p = TableParser()
p.feed(data)

print p.raw_data

未测试。