我正在使用python库SGMLParser来解析一些html。 我遇到了
形式的html标签<td class="school">Texas A&M</td>
我想读出“Texas A&amp; M”。但是当调用handle_data时,它会被“Texas A”调用,然后单独调用“M”(为了清晰起见,引号)。
如何更换
&
带&amp;的字符串在调用之前,没有替换整个字符串中的所有特殊&符号(其中一些我可能需要)。
谢谢!
答案 0 :(得分:4)
如果您从deprecated SGMLParser
切换到现代替代方案,例如LXML(也处理HTML),这就变得微不足道了:
>>> etree.fromstring('''<td class="school">Texas A&M</td>''').text
'Texas A&M'
答案 1 :(得分:2)
SGMLParser有convert_entityref()
方法,但我建议使用具有更好解析器API的lxml或Beautiful Soup而不是弃用的SGMLParser。
答案 2 :(得分:1)
&
等实体引用由handle_entity
处理。检查此方法是否知道如何翻译&
。默认实现应该调用handle_data('&')
,但您可能不小心覆盖了它。
此外,如果可能,请考虑使用更高级的lxml代替。