我有一个文档,它是列表的列表。这个列表是我的数据。
[['From john.johnson@gmail.com Sat Jan 5 09:14:16 2019'], ['Received: from
nakamura.uits.iupui.edu (localhost [127.0.0.1])'], 'Received: from murder ([unix socket])'],
['by mail.umich.edu (Cyrus v2.2.12) with LMTPA;'], ['From tom.tompson@gmail.com Sat Jan 5
13:57:23 2019']['Fri, 04 Jan 2019 18:10:48 -0500'], ['Received: from i .
cestorm.mr.itd.umich.edu (icestorm.mr.itd.umich.edu [141.211.93.149])'], ['From
peter.peterson@gmail.com Sat Jan 5 18:27:37 2019']]我只想捕获那些包含电子邮件的邮件,从“From”开始。我正在寻找的输出是:
[['From john.johnson@gmail.com Sat Jan 5 09:14:16 2019'], ['From tom.tompson@gmail.com Sat
Jan 5 13:57:23 2019']['From peter.peterson@gmail.com Sat Jan 5 18:27:37 2019']]我想获取列表中的每个元素,并检查它是否包含“From”。如果是这样,我想把它附加到emaillst。我拥有的代码不会产生任何结果。
lst = list(data)
emaillst = list()
for k in lst:
if 'From ' in k:
emaillst = emaillst.append(k)
print(emaillst)发布于 2019-11-26 22:38:16
因为data是一个列表列表,所以您需要一个嵌套循环来访问最里面的项。然后,'From ' in k检查该字符串是否存在于k中的任何位置,而不仅仅是开头;为此,您可以使用k.startswith('From ')。还要注意,list.append返回None,因为它是列表的就地修改,即不需要分配emaillst = emaillst.append(k)。因此,总而言之,您可以使用以下列表理解:
email_list = [[k for k in sublist if k.startswith('From ')] for sublist in data]发布于 2019-11-26 22:53:09
你差一点就成功了。但是,当您执行if 'From ' in k:时,您会忘记k是一个列表,而不是一个字符串!
试着这样做:
lst = list(data)
emaillst = []
for k in lst:
if k[0].startswith('From '):
emaillst.append(k)您的lst是一个列表列表(data),而您的data是一个只有一个元素的列表,因此您需要获取第一个元素([0])。
输出:
print(emaillst)
> [['From john.johnson@gmail.com Sat Jan 5 09:14:16 2019'], ['From tom.tompson@gmail.com Sat
Jan 5 13:57:23 2019']['From peter.peterson@gmail.com Sat Jan 5 18:27:37 2019']]编辑:您的列表也不正确(What is missing)。
使用这个:
[‘来自john.johnson@gmail.com Sat Jan 5 09:14:16 2019',[’已接收:来自nakamura.uits.iupui.edu (本地主机127.0.0.1)'],[‘已接收:来自谋杀(unix套接字)’],‘由具有LMTPA的mail.umich.edu (Cyrus v2.2.12);',‘来自tom.tompson@gmail.com Sat Jan 5 13:57:23 2019','Fri,04 Jan 2019 18:10:48 -0500',[’已收到:来自i.cestorm.mr.itd.umich.edu (icestorm.mr.itd.umich.edu 141.211.93.149)'],‘来自peter.peterson@gmail.com Sat Jan 5 18:27:37 2019']
https://stackoverflow.com/questions/59053253
复制相似问题