python - 检查列表中的正则表达式结果,if-else python

标签 python regex list if-statement

我有一个单词列表(甚至 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/

相关文章:

python 请求从浏览器或 urllib 返回不同的网页

python - 在本地 HTML 文件上使用 scrapy 内置选择器

php - 将连字符周围的空格替换为 nbsp

javascript - 使用 RegExp 了解一些 JavaScript

python - 如何为列表中重复的每个值计算平均值?

python - 没有默认值的命名参数?

python - Pygame 和类

Python 正则表达式 findall 到输出文件

python - 根据值调整字典

r - 基于另一个数据框在数据框中扩展行和添加列