如何在python中正则表达式?

时间:2010-07-13 04:28:26

标签: python xml regex parsing

我正在尝试解析Google建议中的关键字,这是网址:

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

我用php完成了它:

'|<CompleteSuggestion><suggestion data="(.*?)"/><num_queries int="(.*?)"/></CompleteSuggestion>|is'

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

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

2 个答案:

答案 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解析器。它会更强大,最终可能会花费更少的时间,即使代码更多。