我正在尝试解析Google建议中的关键字,这是网址:
http://google.com/complete/search?output=toolbar&q=test
我用php完成了它:
'|<CompleteSuggestion><suggestion data="(.*?)"/><num_queries int="(.*?)"/></CompleteSuggestion>|is'
但是这不适用于python re.match(模式,字符串),我尝试了一些,但有些显示错误,有些返回None。
我如何解析该信息?我不想使用minidom,因为我认为正则表达式会减少代码。
答案 0 :(得分:5)
您可以使用etree
:
>>> from xml.etree.ElementTree import XMLParser
>>> x = XMLParser()
>>> x.feed('<toplevel><CompleteSuggestion><suggestion data=...')
>>> tree = x.close()
>>> [(e.find('suggestion').get('data'), int(e.find('num_queries').get('int')))
for e in tree.findall('CompleteSuggestion')]
[('test internet speed', 31800000), ('test', 686000000), ...]
它比正则表达式更多的代码,但它也做得更多。具体来说,它将一次性获取整个匹配列表,并在data
属性中取消任何奇怪的内容,如双引号。如果其他元素开始出现在XML中,也不会感到困惑。
答案 1 :(得分:2)
RegEx match open tags except XHTML self-contained tags
这是一个XML文档。请重新考虑XML解析器。它会更强大,最终可能会花费更少的时间,即使代码更多。