如何在re.search Python中忽略返回None

如何在re.search Python中忽略返回None,python,regex,Python,Regex,我有一个字符串和两个元素的列表,通过使用自定义的def我通过一个不匹配项生成每个元素的不同版本-然后我执行一个循环来执行re.search,如果找到了元素的任何版本,则在主字符串上打印该部分 我的代码正在工作,但我的挑战是跳过re.search中的None 这是我的密码: list=['patterrn1','pattern2'] my_string='something--patterRn1--something' def idf_one_mismatch(x): for i in

我有一个字符串和两个元素的列表,通过使用自定义的
def
我通过一个不匹配项生成每个元素的不同版本-然后我执行一个循环来执行
re.search
,如果找到了元素的任何版本,则在主字符串上打印该部分

我的代码正在工作,但我的挑战是跳过
re.search
中的
None

这是我的密码:

list=['patterrn1','pattern2']
my_string='something--patterRn1--something'

def idf_one_mismatch(x):
    for i in range(len(x)):
        yield x[:i] + '.' + x[i+1:]

def find_while_mismatch(x,y):
    for i in idf_one_mismatch(x):
        m = re.search(i,str(y))
        if m is not None: 
            return m.group()

for i in list:
    idf1 = find_while_mismatch(i, my_string)
    print(idf1)
输出为:

patterRn1
None

输出应跳过
None
,但它不跳过。如何实现这一点?

首先,不要使用保留字/内置字作为变量名,用其他名称替换
列表

其次,如果在
for
循环期间未找到匹配项,则您的
find\u while\u mismatch
将返回此值,因此您将获得
None

使用

如果idf1:
打印(idf1)

如果需要阻止该输出。

函数
查找\u,而\u不匹配
将在for循环耗尽时返回None。在打印之前,您需要检查
idf1
是否为None。如果没有找到匹配项,您希望返回什么?如果没有,请使用
If idf1:print(idf1)
而不是
print(idf1)
作为代码段的最后一行。哎哟:用变量覆盖
列表
。。。