Discuss / Python / 作业

作业

Topic source

后面assert判断不用int而用str的话,会简洁些

class weatherSaxHandler(object):
    def __init__(self):
        self.location = {}
        self.forcast = []
    def start_element(self, name, attrs):
        if name == 'yweather:location':
            self.location = attrs
        if name == 'yweather:forecast':
            self.forcast.append(attrs)
    def end_element(self, name):
        pass
    def char_data(self,text):
        pass

def parse_weather(xml):
    parser = ParserCreate()
    handler = weatherSaxHandler()
    parser.StartElementHandler = handler.start_element
    parser.EndElementHandler = handler.end_element
    parser.CharacterDataHandler = handler.char_data
    parser.Parse(xml)
    today = {
        'text': handler.forcast[0]['text'],
        'low': int(handler.forcast[0]['low']),
        'high': int(handler.forcast[0]['high'])
    }
    tomorrow = {
        'text': handler.forcast[1]['text'],
        'low': int(handler.forcast[1]['low']),
        'high': int(handler.forcast[1]['high'])
    }
    d = {
        'today': today,
        'tomorrow': tomorrow

    }
    d.update(handler.location)
    return d

  • 1

Reply