我有一个单词列表(甚至 1 个对象中有 2 或 3 个单词)。我编译了一个正则表达式来将列表中的任何单词与随机字符串相匹配。如果匹配,则返回列表中的该对象,否则它将在字符串上执行另一个正则表达式以返回表达式。
我的代码:
“layouts”是单词列表,“layout_re”使用列表中的单词来匹配字符串“str”。如果 list 中存在 ms,则返回 ms,否则使用 p
的表达式返回模式。
def layout_corr(str):
ms = layout_re.search(str)
if ms in layouts:
ms=ms
else:
p = re.compile(r'(?:\w+\s+){1,2}layout')
ms = re.findall(p,str)
return ms
我得到的输出是else
语句的输出。
例如:- str = "no 804 8th main 2nd c cross hrbr layout 1st block"
该列表包含“hrbr 布局”,因此必须返回 hrbr 布局。但相反,该函数返回“cross hrbr layout”
,这是由else
语句计算的ms。if
语句有什么问题??
最佳答案
re.search
返回一个匹配对象,而不是字符串,因此:
ms in layouts
将始终返回 false。改用这个:
def layout_corr(str):
ms = layout_re.search(str)
if ms:
return ms.group()
else:
p = re.compile(r'((?:\w+\s+){1,2})layout')
ms = re.findall(p,str)
return ms
关于python - 检查列表中的正则表达式结果,if-else python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22215945/