擅长:python、mysql、java
<p>要在Python中查找包含任何给定关键字的行,可以使用regex:</p>
<pre><code>import re
from itertools import ifilter
def fgrep(words, lines):
# note: allow a partial match e.g., 'b c' matches 'ab cd'
return ifilter(re.compile("|".join(map(re.escape, words))).search, lines)
</code></pre>
<p>要将其转换为命令行脚本:</p>
^{pr2}$
<p>示例:</p>
<pre><code>$ python fgrep.py a b > fruitfound.txt
</code></pre>
<p>有更有效的算法,例如,<a href="http://en.wikipedia.org/wiki/Aho%E2%80%93Corasick_string_matching_algorithm" rel="nofollow">Ago-Corasick algorithm</a>,但是在我的机器上过滤数百万行代码只需要不到一秒钟的时间,而且它可能已经足够好了(<code>grep</code>快了好几倍)。令人惊讶的是,基于Ago-Corasick算法的<a href="http://pypi.python.org/pypi/acora/" rel="nofollow">^{<cd2>}</a>对于我尝试过的数据来说速度较慢。在</p>