擅长:python、mysql、java
<p>关于您的问题:您可以保存一个字典,其中包含每个字符串的计数并返回该值。但如果你保持你目前的结构,那就不好了。在</p>
<p>我的建议是:</p>
<ul>
<li>显然,你不能在整个行中检查整个行。在</li>
<li>您还可以多次读取相同的文件,而您只能读取一次并检查字符串是否存在。在</li>
<li>您正在检查文件的扩展名,这听起来像是<code>glob</code>的作业。在</li>
<li>您可以使用<code>defaultdict</code>,这样就不必关心计数最初是不是<code>0</code>。在</li>
</ul>
<p>修改代码:</p>
<pre><code>from collections import defaultdict
import glob
SMILIES = [':)', ':P', '=]']
def count_in_files(string_list):
results = defaultdict(int)
for file_name in glob.iglob('*.txt'):
print(file_name)
with open(file_name) as input_file:
for line in input_file:
for s in string_list:
if s in line:
results[s] += 1
return results
print(count_in_files(SMILIES))
</code></pre>
<ul>
<li>最后,使用这种方法,如果您使用Python>;=3.5,您可以将<code>glob</code>调用改为<code>for file_name in glob.iglob('**/*.txt', recursive=True)</code>,这样它将递归地搜索,以备需要。在</li>
</ul>
<p>这将打印如下内容:</p>
<p><code>defaultdict(<class 'int'>, {':P': 2, ':)': 1, '=]': 1})</code></p>