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

如何在Python中实现不区分大小写地从DataFrame句子中匹配指定子串并返回

解决不区分大小写的子串匹配问题

嘿,我明白你的需求了——你想要在句子里不区分大小写地匹配指定词汇,并且统一返回小写形式的匹配词对吧?你的原代码是区分大小写的,咱们可以通过统一转换大小写来解决这个问题,下面分两种场景给你方案:

场景1:只需要子串包含匹配(比如"apples"里的"apple"也算匹配)

这种情况最简单的方式就是把句子和待匹配的词汇都转换成小写,然后再做包含判断,同时返回小写形式的词汇:

# 先把当前句子转成小写,只转一次能提升效率
current_sentence = str(df['sentence'][i]).lower()
# 遍历待识别词汇,转小写后判断是否在小写句子中,收集小写形式的匹配词
matched_words = [word.lower() for word in df_word_list['word'].tolist() if word.lower() in current_sentence]

如果你的df_word_list里有重复的词汇(或者不同大小写的同一个词,比如"Apple"和"apple"),可以用集合来去重,避免返回重复结果:

current_sentence = str(df['sentence'][i]).lower()
matched_words = list({word.lower() for word in df_word_list['word'].tolist() if word.lower() in current_sentence})

场景2:需要匹配整个单词(比如不想把"pineapple"里的"apple"算匹配)

如果你的需求是匹配完整的单词而不是子串,那用正则表达式会更准确,通过\b标记单词边界,再加上不区分大小写的标志:

import re

current_sentence = str(df['sentence'][i])
matched_words = []
for word in df_word_list['word'].tolist():
    # 使用re.escape处理词汇里的特殊字符,避免正则语法冲突
    if re.search(rf'\b{re.escape(word)}\b', current_sentence, flags=re.IGNORECASE):
        matched_words.append(word.lower())
# 同样可以去重
matched_words = list(set(matched_words))

这样就能精准匹配整个单词,同时不区分大小写,最后统一返回小写形式的匹配词啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 19:17:42