Python实现用户输入与元组/列表关键词大小写不敏感匹配的方法
大小写不敏感匹配实现方案
核心思路
将用户输入的消息和匹配关键词统一转换为相同的大小写格式后再做匹配,即可实现大小写不敏感的效果,该逻辑对列表、元组、集合等所有可迭代的关键词容器都生效,无需额外修改。
具体实现
你可以直接按下方代码修改原有逻辑,两种方案可选:
方案1:使用.lower()(适合纯英文场景)
你的关键词列表本身已经是全小写格式,所以只需要把用户发送的消息转成全小写再匹配即可:
import random angy_words = ["furious", "rage", "angry", "mad", "angy", "hate", "hatred", "so upset", "so mad", "lame", "loven't", "lord have mercy"] # 提前将用户消息转为全小写,避免重复计算 lower_msg = msg.lower() if any(word in lower_msg for word in angy_words): await message.channel.send(random.choice(angy_response))
如果你的关键词列表后续可能会加入大小写混合的内容,可以把关键词也做归一处理,适配性更强:
if any(word.lower() in lower_msg for word in angy_words):
方案2:使用.casefold()(适合包含特殊字符的多语言场景)
如果你的使用场景会涉及带特殊变音符号的语言、或者德语ß这类特殊字符,用.casefold()比.lower()的匹配兼容性更好,用法完全一致:
casefold_msg = msg.casefold() if any(word.casefold() in casefold_msg for word in angy_words): await message.channel.send(random.choice(angy_response))
元组场景适配
如果你的关键词容器是元组,不需要修改任何匹配逻辑,上述any()的判断写法对所有可迭代对象都通用,直接替换angy_words的类型即可。
内容的提问来源于stack exchange,提问作者Kevin Smith
相关产品推荐
相关产品推荐

