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

Python字符串匹配功能改造:返回匹配词而非0/1,解决NameError报错

错误原因

你的代码存在三处问题:

  • 参数引用错误:你定义的函数参数是list_of_words,但生成器表达式中写的迭代对象是words,变量名不匹配会抛出名称错误
  • 作用域问题:生成器表达式any(i in string for i in words)中的迭代变量i仅在生成器内部生效,离开表达式后就无法访问,所以if分支中return i自然会报变量未定义的错误
  • 依赖问题:如果没有提前导入numpy库,直接返回np.nan也会抛出名称错误,无匹配场景返回None或者空字符串更通用

修正代码(返回第一个匹配到的词汇,符合你的示例需求)

def lookup2(string, list_of_words):
    for word in list_of_words:
        if word in string:
            return word
    # 无匹配的返回值可按需调整,比如改成''或者np.nan(需先导入numpy)
    return None

测试效果:

list_of_words=['pencil','eraser','marker']
print(lookup2('I have a pencil and a pen', list_of_words))
# 输出:'pencil'

拓展实现(返回所有匹配到的词汇)

如果需要返回字符串中所有命中的词汇,可以用列表推导式实现:

def lookup_all(string, list_of_words):
    return [word for word in list_of_words if word in string]

测试效果:

print(lookup_all('I have a pencil and an eraser', list_of_words))
# 输出:['pencil', 'eraser']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:30:04