Python正则匹配列表元素异常:预期输出match却得到No match求解决
问题分析与解决
你的代码核心问题是循环中每次迭代都会覆盖变量x:遍历items时,第一次匹配t1能得到有效匹配对象,但第二次遍历到s1时,re.search("t.", "s1")返回None,直接覆盖了之前的匹配结果。最后判断x时,它已经是None,所以输出"No match"。
修正方案
方案1:找到匹配后终止循环
一旦找到符合条件的项就跳出循环,保留匹配结果:
import re items = ("t1", "s1") x = None for i in items: x = re.search("t.", i) if x: break if x: print("match") else: print("No match")
方案2:用any()简化判断
直接检查是否存在任意匹配项,无需单独维护变量:
import re items = ("t1", "s1") if any(re.search("t.", i) for i in items): print("match") else: print("No match")
两种方案都能输出预期的"match"。
内容的提问来源于stack exchange,提问作者cxs_tyson
相关产品推荐
相关产品推荐

