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

如何按文本出现顺序提取关键词并生成独立变量?

按文本出现顺序提取关键词的解决方案

你当前的列表推导式是按keywords列表的顺序匹配结果,自然不符合文本内的出现顺序。要解决这个问题,得换个思路:从文本内容入手,按顺序扫描匹配关键词,同时处理大小写和去重问题。

实现思路

  • 统一关键词和文本的大小写,避免大小写匹配偏差
  • 按文本的单词顺序逐个检查是否属于关键词集合
  • 用集合记录已匹配的关键词,避免重复加入结果
  • 匹配到后,还原成keywords列表里的原始大小写格式

完整代码

text = "My favorite languages are Python and Java. I like less Rust"
keywords = ["C#", "JAVA", "PHP", "PYTHON", "RUST", "JAVASCRIPT"]

# 转大写集合,提升匹配效率
keyword_upper_set = {kw.upper() for kw in keywords}
matches = []
matched_words = set()

# 拆分文本为单词,处理标点后逐个匹配
for word in text.split():
    # 清理单词末尾的标点(比如句号、逗号)
    cleaned_word = word.strip('.,!?')
    upper_word = cleaned_word.upper()
    if upper_word in keyword_upper_set and upper_word not in matched_words:
        # 找到keywords里对应的原始关键词
        original_keyword = next(kw for kw in keywords if kw.upper() == upper_word)
        matches.append(original_keyword)
        matched_words.add(upper_word)

# 按文本顺序得到匹配结果,可直接赋值给变量
var1, var2, var3 = matches

print("按文本顺序的匹配结果:", matches)
print(var1)
print(var2)
print(var3)

关键说明

  • 用集合keyword_upper_set做匹配判断,比遍历列表效率更高
  • matched_words集合用于去重,防止文本中重复出现的关键词多次加入结果
  • 通过next()方法还原关键词的原始大小写,保持和keywords列表一致的格式
  • 如果不确定匹配到的关键词数量,建议先判断len(matches)再赋值,避免解包报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 17:15:02