我有一个 XML 字符串
<tags>
<person1>dave jones</person1>
<person2>ron matthews</person2>
<person3>sally van heerden</person3>
<place>tygervalley</place>
<ocassion>shopping</ocassion>
</tags>
我想使用“Sally Van Heerden”或“Tygervalley”等搜索词来搜索此 xml 字符串
使用正则表达式查找该字符串中的术语更快,还是 Python 的 find() 方法足够快?我还可以使用 python 的元素树 XML 解析器进行搜索,然后构建 XML 树,然后搜索它,但我担心它会太慢。
以上三个中哪个最快? 还有其他建议吗?
请记住,可以输入多个搜索词,并且还会搜索多个(数千个)XML 字符串。
更新:如何将 xml 字符串拆分为一个列表,删除所有特殊字符,然后将列表转换为一组以及一组搜索词。然后求两个集合的交集?这样会很快吗?
最佳答案
老实说,我认为您必须有一些非常极端的速度要求,这才会成为您的瓶颈,但即使您这样做,对此做出明智决定的唯一方法就是通过测试。
首先,使用 find
/re.findall
搜索字符串中的一个字符串。不过,我怀疑这是否代表您的用例,您需要确定将运行哪些查询并测试这些查询。
% python -mtimeit "'<tags> <person1>dave jones</person1> <person2>ron matthews</person2> <person3>sally van heerden</person3> <place>tygervalley</place> <ocassion>shopping</ocassion> </tags>'.find('tygervalley')"
1000000 loops, best of 3: 0.279 usec per loop
% python -mtimeit "import re; re.findall('tygervalley', '<tags> <person1>dave jones</person1> <person2>ron matthews</person2> <person3>sally van heerden</person3> <place>tygervalley</place> <ocassion>shopping</ocassion> </tags>')"
100000 loops, best of 3: 2.65 usec per loop
正如我所说,很难想象这种差异是程序中最重要的瓶颈。
关于python - Python 的 regex 和 find() 搜索字符串哪个更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10643452/