如何在python中正则表达式?

jah*_*max -1 python regex xml parsing

我试图解析谷歌建议的关键字,这是网址:

http://google.com/complete/search?output=toolbar&q=test

我用php完成了它:

'|<CompleteSuggestion><suggestion data="(.*?)"/><num_queries int="(.*?)"/></CompleteSuggestion>|is'
Run Code Online (Sandbox Code Playgroud)

但是这不适用于python re.match(模式,字符串),我尝试了一些,但有些显示错误,有些返回None.

我该如何解析这些信息?我不想使用minidom因为我认为正则表达式会减少代码.

Mar*_*tos 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), ...]
Run Code Online (Sandbox Code Playgroud)

它比正则表达式更多的代码,但它也做得更多.具体来说,它将一次性获取整个匹配列表,并且可以转换任何奇怪的内容,例如data属性中的双引号.如果其他元素开始出现在XML中,它也不会感到困惑.