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

如何基于含1-2个词的搜索筛选器获取唯一字符串值

问题描述

我有一个字符串列表,还有一个可能包含1个或2个词的搜索筛选器,想要从列表里提取所有匹配筛选器开头部分的唯一值。

原始字符串列表:

DEPRI-LOOP 15502 Bulk
DELETE-LOOP 15500 PAIL
DELETE-LOOP 15667 PAIL
OBSOLATE-LOOP 15834 PAIL
DO NOT USE - LOOP 15835 Conc Bulk
LOOP 15000 Bulk
LOOP 15000 Drum, Stg
LOOP 15002 Bulk
LOOP 15002 Drum, Stg
LOOP 15002 LA
LOOP 15250B Bulk
LOOP 15250C Conc Mat
LOOP 15250D Bulk
LOOP 15250D Drum, Stg
LOOP 15400 Bulk
LOOP 15400 Bulk Mat
LOOP 15400 Drum, Stg
LOOP 15500 Bulk
LOOP 15500 Conc Mat
LOOP 15500 Conc Filt Bulk
LOOP 15500 Bulk Mat
LOOP 15500 Drum, Stg
LOOP 15500 IBC BR
LOOP 15500 LA
LOOP 15667 Bulk
LOOP 15667 Conc Mat
LOOP 15667 Conc Filt Bulk
LOOP 15667 Drum, Stg
LOOP 15668 Bulk
LOOP 15668 Conc Bulk
LOOP 15668 Drum, Stg
LOOP 15668D Bulk
LOOP 15668D Drum, Stg
LOOP 15833 Bulk
LOOP 15833 Drum, Stg
LOOP 15834 Bulk
LOOP 15835 Bulk

当筛选器为LOOP 15时,期望得到的唯一值列表:

LOOP 15502
LOOP 15500
LOOP 15667
LOOP 15834
LOOP 15835
LOOP 15000
LOOP 15002
LOOP 15250B
LOOP 15250C
LOOP 15250D
...
解决方案

以Python为例,核心思路是定位筛选器在字符串中的位置,截取筛选器后到下一个空格前的内容,再通过集合自动去重:

# 原始字符串列表
raw_list = [
    "DEPRI-LOOP 15502 Bulk",
    "DELETE-LOOP 15500 PAIL",
    "DELETE-LOOP 15667 PAIL",
    "OBSOLATE-LOOP 15834 PAIL",
    "DO NOT USE - LOOP 15835 Conc Bulk",
    "LOOP 15000 Bulk",
    "LOOP 15000 Drum, Stg",
    "LOOP 15002 Bulk",
    "LOOP 15002 Drum, Stg",
    "LOOP 15002 LA",
    "LOOP 15250B Bulk",
    "LOOP 15250C Conc Mat",
    "LOOP 15250D Bulk",
    "LOOP 15250D Drum, Stg",
    "LOOP 15400 Bulk",
    "LOOP 15400 Bulk Mat",
    "LOOP 15400 Drum, Stg",
    "LOOP 15500 Bulk",
    "LOOP 15500 Conc Mat",
    "LOOP 15500 Conc Filt Bulk",
    "LOOP 15500 Bulk Mat",
    "LOOP 15500 Drum, Stg",
    "LOOP 15500 IBC BR",
    "LOOP 15500 LA",
    "LOOP 15667 Bulk",
    "LOOP 15667 Conc Mat",
    "LOOP 15667 Conc Filt Bulk",
    "LOOP 15667 Drum, Stg",
    "LOOP 15668 Bulk",
    "LOOP 15668 Conc Bulk",
    "LOOP 15668 Drum, Stg",
    "LOOP 15668D Bulk",
    "LOOP 15668D Drum, Stg",
    "LOOP 15833 Bulk",
    "LOOP 15833 Drum, Stg",
    "LOOP 15834 Bulk",
    "LOOP 15835 Bulk"
]

filter_str = "LOOP 15"
unique_results = set()

for s in raw_list:
    # 找到筛选器在字符串中的起始位置
    filter_pos = s.find(filter_str)
    if filter_pos == -1:
        continue
    # 从筛选器结束位置开始,截取到下一个空格的内容
    start = filter_pos + len(filter_str)
    end = s.find(' ', start)
    if end == -1:
        end = len(s)
    # 组合筛选器和截取到的片段,加入集合去重
    target = filter_str + s[start:end].strip()
    unique_results.add(target)

# 转成有序列表并输出
sorted_results = sorted(unique_results)
for item in sorted_results:
    print(item)

这段代码的优势是通用性强:如果筛选器是单个词(比如LOOP),只需修改filter_str的值,逻辑依然能正常提取LOOP+后续编号的唯一片段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 14:05:24