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

Python如何判断字符串是否包含指定词库中的单词并返回匹配值

问题分析

原有代码存在两处核心错误:

  • 逻辑判断错误:if names in string 是尝试判断整个列表对象是否为字符串的子元素,该逻辑永远不成立,返回结果恒为False
  • 变量未定义:print(name) 中的name变量没有提前声明赋值,运行会抛出变量不存在的报错
基础实现方案(子串匹配)

如果只要目标字符串中出现对应名称的子串就算匹配,不需要校验是否为独立单词,直接遍历词库逐个判断即可:

names = ["Joe", "Smith", "Nancy"]
string = "Her name was Nancy"

for name in names:
    if name in string:
        print(name)

运行后会直接输出匹配到的Nancy,如果字符串中存在多个匹配的名称,会依次全部输出。
也可以用列表推导式一次性获取所有匹配结果:

matched_names = [name for name in names if name in string]
print(matched_names)
进阶实现方案(严格单词匹配)

如果需要避免子串误匹配(比如字符串中出现Joey时不匹配Joe),可以使用正则的单词边界实现精确的独立单词匹配:

import re

names = ["Joe", "Smith", "Nancy"]
string = "Her name was Nancy"

# 生成正则匹配规则,re.escape规避名称中特殊字符的匹配异常
pattern = re.compile(r'\b(' + '|'.join(re.escape(name) for name in names) + r')\b')
matches = pattern.findall(string)

for match in matches:
    print(match)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:09:02