计数组织(数据库sqlite3)

2024-03-28 10:02:51 发布

您现在位置:Python中文网/ 问答频道 /正文


Tags: python
2条回答

您没有从电子邮件中提取域。因此,同一域中的多封电子邮件被视为不同的组织

for line in fh:
    if not line.startswith('From: '): continue
    pieces = line.split()
    email = pieces[1]
    pieces = email.splot('@')
    org = pieces[1]
    ...

另外,您可能希望使用SQLite INSERT - ON DUPLICATE KEY UPDATE (UPSERT)中的代码,这样就不必执行SELECT查询来查看组织是否已经存在

您检索到的结果是电子邮件地址,而不是电子邮件域。您必须在“@”符号处拆分电子邮件地址才能获得域名:

if not line.startswith('From: '): 
    continue
pieces = line.split('@') # this is what you want
org = pieces[1]
cur.execute('SELECT count FROM Counts WHERE org = ? ', (org,))

说明:我们不是在每个空格处分割字符串(这是Python str.split()函数的默认行为),而是在'@'符号处分割字符串。因此,文本文件中的一行'From: name@email.com'将成为一个包含两部分的列表:['From: name', 'email.com']

然后,您可以使用第二部分并跟踪该部分,希望代码能够正常工作

相关问题 更多 >