此应用程序将读取邮箱数据(mbox.txt)并计算每个组织的电子邮件数量(即电子邮件地址的域名)使用具有以下模式的数据库来维护计数。CREATE TABLE Counts (org TEXT, count INTEGER)
我写了一段代码,但他们在作业中给出了一个提示,最高的组织计数是536
,我得到了390
。
Link to the data
import sqlite3
conn = sqlite3.connect('data2.sqlite')
cur = conn.cursor()
cur.execute('DROP TABLE IF EXISTS Counts')
cur.execute('CREATE TABLE Counts (org TEXT, count INTEGER)')
for line in open('mbox.txt'):
if not line.startswith('From'):
continue
line = line.split()
email = line[1]
domaine = email.split('@')[1]
cur.execute('SELECT count FROM Counts WHERE org = ?',(email,))
row = cur.fetchone()
if not row:
cur.execute('INSERT INTO Counts `(`org, count`) `VALUES (?,1)',(email,))
else:
cur.execute('UPDATE Counts SET count=count+1 WHERE org=?', (email,))
conn.commit()
2条答案
按热度按时间d6kp6zgx1#
这是我从这段代码中得到的dict。536是最高的。
这是我用你的代码得到的dict,所以我认为过滤是可疑的。
col17t5w2#
导入sqlite3
conn=sqlite3.connect('data2.sqlite')cur=conn.cursor()
cur.execute('DROP TABLE IF EXISTS Counts')
cur.execute('CREATE TABLE Counts(org TEXT,count INTEGER ')
fhandle=open('mbox.txt')for line in fhandle:if not line.startswith('From:'):continue