Python 3.x 使用HTMLParser.getpos()的正确方法?

Python 3.x 使用HTMLParser.getpos()的正确方法?,python-3.x,html-parsing,Python 3.x,Html Parsing,使用Python3方法的正确方法是什么 我使用以下示例来探索方法的子集: 我的复制和粘贴演示程序工作正常。但是现在我想使用html.parser的方法来获取标记的行号和偏移量 经过多次实验,包括尝试向示例中给出的类中添加单独的def getpos()方法(完全没有输出),我能够返回其行号和偏移量元组的唯一方法是在以下代码段的第4行插入一行(在我看来)笨拙而丑陋的代码: from html.parser import HTMLParser ... class FlareTopicParser(H

使用Python3方法的正确方法是什么

我使用以下示例来探索方法的子集:

我的复制和粘贴演示程序工作正常。但是现在我想使用html.parser的方法来获取标记的行号和偏移量

经过多次实验,包括尝试向示例中给出的类中添加单独的def getpos()方法(完全没有输出),我能够返回其行号和偏移量元组的唯一方法是在以下代码段的第4行插入一行(在我看来)笨拙而丑陋的代码:

from html.parser import HTMLParser
...
class FlareTopicParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        # Following line inserted by me into class's examples.
        print("  Line, offset ==", HTMLParser.getpos(self))
        # This working code from examples per
        # https://docs.python.org/3/library/html.parser.html#examples
        print("  Start tag:", tag)
        for attr in attrs:
        print("  attr:", attr)
这是有效的——仅举一个例子,对于它打印的HTML输入文件第5行的零缩进开始标记:

  Line, offset == (5, 0)
但是示例代码第4行中的
HTMLParser.getpos(self)
构造似乎(对于这个偶尔出现的Python 3编码器来说)笨拙且错误


正确的使用方法是什么,或者如果您愿意,更好的使用方法是什么?

无需在解析器中重写
getpos
;我建议将第4行改写如下:

(line, column) = self.getpos()
print("line %d column %d") % (line, column)
通过对
getpos()
的此类调用,您还可以单独使用