首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从列表列表中只过滤必要的数据?

如何从列表列表中只过滤必要的数据?
EN

Stack Overflow用户
提问于 2019-11-26 22:33:42
回答 2查看 39关注 0票数 1

我有一个文档,它是列表的列表。这个列表是我的数据。

代码语言:javascript
复制
[['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”开始。我正在寻找的输出是:

代码语言:javascript
复制
[['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。我拥有的代码不会产生任何结果。

代码语言:javascript
复制
lst = list(data)
emaillst = list()
for k in lst:
    if 'From ' in k:
        emaillst = emaillst.append(k)
        print(emaillst)
EN

回答 2

Stack Overflow用户

发布于 2019-11-26 22:38:16

因为data是一个列表列表,所以您需要一个嵌套循环来访问最里面的项。然后,'From ' in k检查该字符串是否存在于k中的任何位置,而不仅仅是开头;为此,您可以使用k.startswith('From ')。还要注意,list.append返回None,因为它是列表的就地修改,即不需要分配emaillst = emaillst.append(k)。因此,总而言之,您可以使用以下列表理解:

代码语言:javascript
复制
email_list = [[k for k in sublist if k.startswith('From ')] for sublist in data]
票数 2
EN

Stack Overflow用户

发布于 2019-11-26 22:53:09

你差一点就成功了。但是,当您执行if 'From ' in k:时,您会忘记k是一个列表,而不是一个字符串!

试着这样做:

代码语言:javascript
复制
lst = list(data)
emaillst = []
for k in lst:
    if k[0].startswith('From '):
        emaillst.append(k)

您的lst是一个列表列表(data),而您的data是一个只有一个元素的列表,因此您需要获取第一个元素([0])

输出:

代码语言:javascript
复制
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']

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59053253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档