Discuss / Python / 想问一下:attrs是字典的话,为什么attrs['href']会出现KeyError: 'href'

想问一下:attrs是字典的话,为什么attrs['href']会出现KeyError: 'href'

Topic source

from xml.parsers.expat import ParserCreate

class DefaultSaxHandler(object):

    def start_element(self, name, attrs):

        print('sax:start_element: %s, attrs: %s' % (name, attrs['href']))

    def end_element(self, name):

        print('sax:end_element: %s' % name)

    def char_data(self, text):

        print('sax:char_data: %s' % text)

xml = r'''<?xml version="1.0"?>

<ol>

    <li><a href="/python">Python</a></li>

    <li><a href="/ruby">Ruby</a></li>

</ol>

'''

handler = DefaultSaxHandler()

parser = ParserCreate()

parser.StartElementHandler = handler.start_element

parser.EndElementHandler = handler.end_element

parser.CharacterDataHandler = handler.char_data

parser.Parse(xml)

错误结果:

Traceback (most recent call last):

  File "C:\py\innermodule.py", line 430, in <module>

    parser.Parse(xml)

  File "D:\a\1\s\Modules\pyexpat.c", line 423, in StartElement

  File "C:\py\innermodule.py", line 414, in start_element

    print('sax:start_element: %s, attrs: %s' % (name, attrs['href']))

                                                      ~~~~~^^^^^^^^

KeyError: 'href'


  • 1

Reply