如果正则表达式在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(返回列表)。