在下面的代码中,我设法在imap库的电子邮件主题中找到了一个模式,并成功使用电子邮件ID打印了所有结果。但是,我想找出模式匹配的总次数。
我尝试使用len(结果),但它无法正常工作。非常感谢任何帮助!
import imaplib
import email
import re
mail = imaplib.IMAP4_SSL('xxxxx')
mail.login('xxxx' , 'xxxx')
mail.list()# Out: list of "folders" aka labels
mail.select('inbox')# Connects to Inbox
typ, uid = mail.uid('search',None, '(SUBJECT "")')
print ('TOTAL EMAILS IN MAILBOX:', len(uid[0].split()) + 1)
for ids in uid[0].split():
typ, data = mail.uid('FETCH',ids, '(RFC822.SIZE BODY.PEEK[HEADER.FIELDS (SUBJECT)])')
#ids=int(ids)+1
subj = data[0][1].lstrip('Subject:').strip() + ' '
patt = '.*'+'MV'+'.*'
result = re.findall(patt, subj, re.I)
for r in result:
print ids,r
mail.logout()
答案 0 :(得分:0)
看起来result
始终为len==1
,因为您的patt
匹配任何后跟'MV'的内容,后跟任何内容(如果字符串中存在“MV”)成为整个字符串。这也适用于脚本中的任何一点,因为每个循环都会重新定义result
。
如果您想要为每个result
计算所有匹配的ids
,则需要一个额外的计数器变量:
result = re.findall(patt, subj, re.I)
resultCnt+=len(result)
答案 1 :(得分:-1)
我认为findall返回的迭代器不是可迭代的。
total = 0
for r in result:
total += 1