擅长:python、mysql、java
<p>尽管这些行已经被<code>readlines()</code>拆分了,但它们还是被拆分了。这应该有效:</p>
<pre><code># actually no need for readline() here, the file object can be
# directly used to iterate over the lines
keywords = (line.strip().lower() for line in f0)
# ...
for word in keywords:
if re.search(r"\b"+word+r"\b",line1):
</code></pre>
<p>这里使用的是一个生成器表达式。你应该了解这些,它们非常方便,也可以用来代替<code>map</code>和<code>filter</code>的<a href="http://docs.python.org/tutorial/datastructures.html#list-comprehensions" rel="nofollow">list comprehensions</a>。</p>
<p>请注意,在循环之前创建正则表达式可能更有效,如下所示:</p>
<pre><code>keywords = (line.strip() for line in f0)
# use re.escape here in case the keyword contains a special regex character
regex = r'\b({0})\b'.format('|'.join(map(re.escape, keywords)))
# pre-compile the regex (build up the state machine)
regex = re.compile(regex, re.IGNORECASE)
# inside the loop over the lines
if regex.search(line1)
print "ok"
</code></pre>