繁体   English   中英

如何检查某事是否已处理 Python

[英]How to check if something has been process Python

我必须检查是否已处理字符串/电子邮件如果已处理是因为已打印“END”

我的过程是一个循环,每天检查5天前的这种结构:

获取 email -> 处理 email -> 获取信息 -> 修改数据 -> “END”

我必须保存这个:

Email 处理? 日期
a@gmail.com 真的 2021 年 8 月 4 日
b@gmail.com 错误的 2021 年 2 月 4 日

我正在考虑使用这样的字典:

Keys: email, processed, date
Values: ['a@gmail.com','b@gmail.com'], [True, False], ['08/04/2021', '02/04/2021']

但我完全不确定

你有什么建议?

您可以使用 JSON 作为对象列表(这是有效的 JSON

[
   {
      "email":"foo@example.com",
      "processed":true,
      "date":"2021-04-08"
   },
   {
      "email":"bar@example.com",
      "processed":false,
      "date":"2021-04-06"
   }
]

与 Python 对象( listdict )的对应关系很简单。

您建议的字典结构效果很好,但如果您将其扩展到数千封电子邮件,则检索这些数据会有点困难。 如果您有一百万封电子邮件,并且想要检查是否处理了 abc@gmail.com,则必须找到 email 的索引,然后使用该索引。

我建议使用 email 作为这样的关键

{'a@gmail.com' : [True,'08/04/2021'], 'b@gmail.com' : [False,'02/04/2021']}

这样即使您有一百万封电子邮件,您也可以使用dictionary['a@gmail.com']获取所有详细信息

让 Anandha 的回答更进一步,我会这样做:

data = {'a@gmail.com' : {"processed":True,'date':'08/04/2021'}, 'b@gmail.com' : {"processed":False,'date':'02/04/2021'}}

然后会有一个完整的状态报告:

for key in data:
    if data[key]['processed'] not True:
        print("We have not yet processed account: " + key)         
    else:
        print(key + " was processed on " + data[key]['date'])

或者如果你想检查一个人

key = "a@gmail.com"
if data[key]['processed'] not True:
        print("We have not yet processed account: " + key)         
    else:
        print(key + " was processed on " + data[key]['date'])

显然,您将 if 循环放入单独的 function 以整理您的代码。

在 5 天前搜索方面,我建议使用 datetime.strptime() 转换您的日期条目,然后使用 datetime.now() 中的 timedelta(days=-5) 检查它是否在 5 天 window 内。

编辑:创建字典(单个条目):

data = {}
data['c@gmail.com']={'processed':False, 'date':'2021/04/08'}
data['d@gmail.com']={'processed':True, 'date':'2021/04/07'}

如果您是从现有文件或变量创建,那么我需要在提出建议之前查看它的形状。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM