【发布时间】:2014-04-08 14:02:07
【问题描述】:
我有一个单词列表(甚至 1 个对象中有 2 个或 3 个单词)。我已经编译了一个正则表达式来匹配列表中的任何单词到一个随机字符串。如果匹配,则返回列表的该对象,否则它将在字符串上执行另一个正则表达式以返回表达式。
我的代码:
“layouts”是单词列表,“layout_re”使用列表中的单词匹配字符串“str”。如果 ms 存在于 list 中,则返回 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语句计算的毫秒。if语句有什么问题??
【问题讨论】:
-
re.search返回一个match对象(或None),而re.findall返回一个list。两者都没有返回纯对象匹配。
标签: python regex list if-statement