如果正则表达式在Python中失败,是否可以选择返回变量?

如果正则表达式在Python中失败,是否可以选择返回变量?,python,regex,return-value,Python,Regex,Return Value,我创建了一个类似以下内容的函数: def function(input): data = input.txt A = re.search(r'(re)(ge)(x1)',data).group(2) B = re.search(r'(re)(ge)(x2)',data).group(2) C = re.search(r'(re)(ge)(x3)',data).group(2) return A + "text" + B + C 我在循环许多input.t

我创建了一个类似以下内容的函数:

def function(input):
    data = input.txt
    A = re.search(r'(re)(ge)(x1)',data).group(2)
    B = re.search(r'(re)(ge)(x2)',data).group(2)
    C = re.search(r'(re)(ge)(x3)',data).group(2)
    return A + "text" + B + C
我在循环许多input.txt文件的循环中运行它。有时,在input.txt中,B或C可能不存在。发生这种情况时,我会得到一个错误:

AttributeError: 'NoneType' object has no attribute 'group'

这似乎停止了我的循环。有没有一种方法可以使返回的B或C成为可选的,这样我的循环就可以继续运行

只是不要自动调用B和C的
.group(2)
。这假设您知道您总能找到a的匹配项

def function(input):
    data = input.txt
    A = re.search(r'(re)(ge)(x1)',data).group(2)

    gb = re.search(r'(re)(ge)(x2)',data)
    B = gb.group(2) if gb else ""

    gc = re.search(r'(re)(ge)(x3)',data)
    C = gc.group(2) if gc else ""

    return "%stext%s%s" % (A, B, C)

你看过try/catch吗?find方法不存在。根据异常情况,他可能在使用re.search,而不是re.find(不存在)或re.findall(返回列表)。