Python按部分字符串在列表中进行筛选

2024-10-03 02:46:29 发布

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

新手问题在这里

我有一个列表列表,如果一行中存在一个部分字符串,我需要过滤掉整个元素(行)

例如

df = [['frog','womble','badger'], ['frog','ant','owl'], ['frog','badger','dataERRORdata']]

我需要在%ERROR%上搜索(因为周围的文本很大而且是可变的),然后删除整个元素,留下

[['frog','womble','badger'], ['frog','ant','owl']]

我尝试了一些列表/生成器类型的循环,但无法使其工作。如果有一个基于上面的例子,我会非常有用,这样我就可以根据我的具体情况调整它

感觉这很简单,我只是错过了一些简单的东西

谢谢


Tags: 字符串文本元素类型df列表owl例子
2条回答

您可以使用all中的生成器表达式来检查每个子列表中是否有包含'ERROR'的字符串,使用列表理解来循环过滤这些子列表

>>> [sub for sub in df if all('ERROR' not in s for s in sub)]
[['frog', 'womble', 'badger'], ['frog', 'ant', 'owl']]

这种对^{}的理解可以:

df = [['frog','womble','badger'],['frog','ant','owl'],['frog','badger','dataERRORdata']]

clean = [sub for sub in df if not any('ERROR' in w for w in sub)]
# [['frog', 'womble', 'badger'], ['frog', 'ant', 'owl']]

这是以下嵌套循环(docs on for-else)的缩写:

clean = []
for sub in df:
    for w in sub:
        if 'ERROR' in w:
            break
    else:  # loop not broken out of
        clean.append(sub)

相关问题 更多 >