在python中查找匹配的部分子字符串

时间:2017-01-13 19:59:17

标签: python

我想检查名词中的任何元素是否与表格中的任何一个元素匹配。

“设备”中的第一个元素。显然它与“projname:dataset.devices”匹配。如果找到匹配, 循环应该中断,否则它应该检查名词中的第二个元素,即“今天”是否匹配表中的任何元素。

    tables = ["projname:dataset.devices","projname:dataset.attempts"]

    noun = [devices,today]

我用“表中的名词”试了一下,结果是空的。我还可以尝试其他方法吗?

提前致谢!!

5 个答案:

答案 0 :(得分:3)

any(n in s for n in nouns for s in tables)的简单使用就足以进行检查。

如果你真的想要匹配的项目,你可以编写这个快速功能:

>>> def first_match(nouns, tables):
...     for n in nouns:
...         for t in tables:
...             if n in t:
...                 return t
...
>>> first_match(nouns,tables)
'projname:dataset.devices'

答案 1 :(得分:1)

<强>任务:

  1. '检查名词中的任何元素是否与中的任何一个元素匹配 表'
  2. '如果任何函数返回true,我必须在表'
  3. 中获取相应的元素

    数据:

    tables = ["projname:dataset.devices","projname:dataset.attempts"]
    noun = ['devices','today']
    

    生成器表达

    这仅根据OP请求给出第一个匹配。

    try:
        print(next(t for n in noun for t in tables if n in t))
    except StopIteration:
        pass
    

    <强>输出:

       'projname:dataset.devices'
    

答案 2 :(得分:0)

请注意,在您的代码中,当您说noun in tables时,它意味着另一个列表(表)的列表(名词)INSIDE。这不是我们想要找到的,而是你想找到存在于表格的一个元素内的每个名词。请尝试以下方法:

tables = ["projname:dataset.devices","projname:dataset.attempts"]

nouns = ["devices","today"]

for noun in nouns:
    for table in tables:
        if noun in table:
            print "Found", noun
            break

答案 3 :(得分:0)

这个简单的解决方案怎么样:

>>> tables = ["projname:dataset.devices","projname:dataset.attempts"]
>>> noun = ['devices','today']
>>> for x in noun:
        if any(x in s for s in tables):
            print('Found !')
            break


Found !

答案 4 :(得分:0)

根据你的评论我假设列表中的元素不是字符串,不知道如何在python上获取var名称,所以这是我的解决方案

    tables = ["projname:dataset.devices","projname:dataset.attempts"]

noun = {"devices": devices, "today": today}

for n in noun:
    for table in tables:
        if n in table:
            break