【问题标题】:Finding word/element in list and return matched value在列表中查找单词/元素并返回匹配值
【发布时间】:2019-02-26 18:34:37
【问题描述】:

我正在努力解决以下问题。我有两个列表:wordList 和 myLIST

目标是检查wordList 中的任何元素是否也在myList 中。然后应该返回匹配的值。

脚本如下:

import re

myList = ['volkswagen-ag','audi-ag','lamborghini-ag']  
wordList = ['volkswagen','audi','lamborghini'] 


def findWholeWord(w):
    return re.compile(r'\b({0})\b'.format(w), flags=re.IGNORECASE).search

    for x in myList:
        b = findWholeWord(y)(x)
        print(b)

它产生这个结果:

<re.Match object; span=(0, 10), match='volkswagen'>
None
None
None
<re.Match object; span=(0, 4), match='audi'>
None
None
None
<re.Match object; span=(0, 11), match='lamborghini'>

如何获取myLIST 中匹配字段的值(例如:"Volkswagen" 应该返回"volkswagen-ag"?我刚刚从另一个博客条目中获得了解决方案。

我想用匹配的值创建一个新列表。

【问题讨论】:

    标签: python list


    【解决方案1】:

    您包含了单词边界,但您没有包含搜索词之后的字符。您应该将正则表达式更新为r'\b({0}[^\s]+)\b'。这将在您的搜索词之后提取所有非空格字符。

    【讨论】:

    • 非常感谢您提供的又好又快的遮阳篷。没有我收到正确的结果。最后一个问题。我如何访问匹配的值? 无 无 无 无 [] 进程以退出代码 0 结束
    • 结果存储在一个元组中,您可以通过b[1]访问它。
    • 如果我想将所有匹配的值存储在一个列表中,我该怎么办?
    • 这可能比问题看起来要困难一些。尝试将问题改写为,而不是“我想”为“我想”。纵观 cmets,RE 可能不是获得您想要的东西的最佳方式。
    • 结果应该是:volkswagen-ag,audi-ag,lamborghini-ag。唯一的问题是如何从 re.MatchObject 中提取匹配值: 无 无 无 无 进程以退出代码 0 结束
    猜你喜欢
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    • 1970-01-01
    • 2016-06-27
    • 1970-01-01
    相关资源
    最近更新 更多