擅长:python、mysql、java
<p>我希望下面的代码能有所帮助。在</p>
<p>但是,有三点需要注意:</p>
<ol>
<li>打开文件时使用(<a href="https://docs.python.org/2/reference/compound_stmts.html#the-with-statement" rel="nofollow"><em>with</em></a>)</li>
<li>在遍历字典时,使用<a href="https://docs.python.org/2/library/stdtypes.html#dict.iteritems" rel="nofollow"><em>iteritems()</em></a></li>
<li>在处理容器时,<a href="https://docs.python.org/2/library/collections.html" rel="nofollow"><em>collections</em></a>是你最好的朋友</li>
</ol>
<hr/>
<pre><code>#!/usr/bin/python
import re
from collections import Counter
fmt = " %-32s %-15s"
filename = 'kkmail'
# Extract the email addresses
email_list = []
with open(filename, 'r') as log:
for line in log.readlines():
_re = re.search('.*from=<(.*)>,\ssize', line)
if _re:
name = _re.group(1)
email_list.append(name)
# Count the email addresses
counts = dict(Counter(email_list)) # List to dict of counts: {'a':3, 'b':7,...}
for key, val in counts.iteritems():
print fmt % (key, val)
</code></pre>