【问题标题】:Python 2.7, ValueError when dealing with HTMLParserPython 2.7,处理 HTMLParser 时出现 ValueError
【发布时间】:2010-09-01 06:12:01
【问题描述】:

第一次使用 HTMLParser 模块。尝试在输出上使用标准字符串格式,但它给了我一个错误。以下代码:

import urllib2
from HTMLParser import HTMLParser

class LinksParser(HTMLParser):
    def __init__(self, url):
        HTMLParser.__init__(self)
        req = urllib2.urlopen(url)
        self.feed(req.read())

    def handle_starttag(self, tag, attrs):
        if tag != 'a': return
        for name, value in attrs:
        print("Found Link --> {]".format(value))


if __name__ == "__main__":
    LinksParser("http://www.facebook.com"

产生以下错误:

File "C:\Users\workspace\test\src\test.py", line 15, in handle_starttag  
print("Found Link --> {]".format(value))  
ValueError: unmatched '{' in format

【问题讨论】:

    标签: python html-parsing


    【解决方案1】:
    print("Found Link --> {]".format(value)) 
    

    应该是:

    print("Found Link --> {}".format(value))
    

    您使用了方括号而不是大括号。

    【讨论】:

    • 哇,我觉得自己很傻。好吸引眼球。大声笑,也许我应该增加我的编辑器的字体大小。 :) 现在工作正常。
    【解决方案2】:

    此格式字符串看起来已损坏:print("Found Link --> {]".format(value))。您需要将其更改为 print("Found Link --> {key}".format(key = value))

    【讨论】:

      【解决方案3】:

      有几个问题

      • handle_starttag 中的打印语句应缩进
      • 在最后一行中缺少右括号
      • handle_starttag 的打印语句中,您应该使用{0} 而不是{]

      【讨论】:

        猜你喜欢
        • 2010-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-07
        • 1970-01-01
        • 1970-01-01
        • 2011-09-23
        相关资源
        最近更新 更多