如何判断输入字符串是否完整包含指定列表中的某一有序完整短语
你之前的写法逻辑颠倒了:USER_INPUT_STRING in BAD_STRINGS 是判断用户输入的完整内容和不良列表中的某一项完全相等,不是判断用户输入里包含某段不良字符串,所以结果不符合预期。
你可以直接遍历不良字符串列表,逐段判断是否完整存在于用户输入中,Python原生的in关键字就可以满足「完整内容、单词顺序完全一致、连续匹配」的要求,不需要额外引入正则:
BAD_STRINGS = ['change of director interest notice', 'change of directors interest notice', 'dividend reinvestment plan allocation price'] def check_bad_content(user_input: str) -> bool: for bad_str in BAD_STRINGS: # 只要用户输入包含任意一段完整的不良字符串就返回True if bad_str in user_input: return True # 遍历完所有不良字符串都没命中就返回False return False
测试验证:
# 第一个测试用例,预期返回False user_input1 = "interest love horses change of director house price" print(check_bad_content(user_input1)) # 输出False # 第二个测试用例,预期返回True user_input2 = "i walked in the part and change of directors interest notice house price" print(check_bad_content(user_input2)) # 输出True
如果需要支持大小写不敏感的匹配,只需要把判断逻辑改成if bad_str.lower() in user_input.lower():即可。
内容的提问来源于stack exchange,提问作者Trentfrompunchbowl1
相关产品推荐
相关产品推荐

