You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python:如何根据关键词列表对字符串列表分组筛选?

按关键词分组匹配字符串子串的解决方案

输入数据

原字符串列表:

List_all = ["aawoobbcc", "aawoobbca", "aabbcskindd","asakindsbbss","wooedakse","sdadakindwsd","xxxxsdsd"]

关键词列表:

Key = ["woo","kind"]

错误代码分析

你尝试的两段代码存在逻辑/语法问题:

  1. list_sub = [file for file in List_all if Key in file]:Key是列表,无法直接判断列表是否为字符串的子串,逻辑不成立,结果为空。
  2. list_sub = [file for file in List_all if k for k in Key in file]:语法错误,列表推导式的条件部分写法不符合Python规则,嵌套逻辑混乱。

正确实现

可以通过遍历每个关键词,分别筛选匹配的字符串来实现需求,有两种写法:

写法1:普通循环(易读)

List_all = ["aawoobbcc", "aawoobbca", "aabbcskindd","asakindsbbss","wooedakse","sdadakindwsd","xxxxsdsd"]
Key = ["woo","kind"]

result = []
# 遍历每个关键词
for keyword in Key:
    # 筛选出当前关键词对应的所有字符串
    matched = [s for s in List_all if keyword in s]
    result.append(matched)

print(result)

写法2:嵌套列表推导式(简洁)

List_all = ["aawoobbcc", "aawoobbca", "aabbcskindd","asakindsbbss","wooedakse","sdadakindwsd","xxxxsdsd"]
Key = ["woo","kind"]

result = [[s for s in List_all if k in s] for k in Key]
print(result)

输出结果

运行后得到你需要的分组结果:

[
["aawoobbcc", "aawoobbca","wooedakse"],
["aabbcskindd","asakindsbbss","sdadakindwsd"]
]

逻辑说明

  • 外层遍历关键词列表Key中的每个关键词
  • 内层针对每个关键词,遍历List_all筛选出包含该关键词的字符串,组成子列表
  • 所有子列表最终组合成结果列表,自动忽略不匹配任何关键词的字符串(如xxxxsdsd)

内容的提问来源于stack exchange,提问作者ravenni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 17:52:12