【问题标题】:Using regex in tuple filter在元组过滤器中使用正则表达式
【发布时间】:2021-05-02 05:08:45
【问题描述】:

我有一个元组列表:

lst = [('4', 'None', '--'), ('5', 'None', '--'), ('7', 'PSC3', 'SAD1510034G'), ('8', 'SMC', 'SAD164400FV')]

我想过滤掉所有包含“无”的元组。以下带有硬编码值的表达式有效:

>>> list(filter(('4','None','--').__ne__,lst))
[('5', 'None', '--'), ('7', 'PSC3', 'SAD1510034G'), ('8', 'SMC', 'SAD164400FV')]

我不知道如何在过滤器表达式中使用正则表达式/通配符,例如:

list(filter(('*','None','--').__ne__,lst))

也许这是不可能的。

谢谢, 丹

【问题讨论】:

    标签: python list filter


    【解决方案1】:

    您可以使用成员资格检查而不是正则表达式,如下所示:

    >>> list(filter(lambda x: 'None' not in x, lst))
    [('7', 'PSC3', 'SAD1510034G'), ('8', 'SMC', 'SAD164400FV')]
    

    【讨论】:

      【解决方案2】:

      您可以根据元组中不是None的第二个值进行过滤:

      lst = [('4', 'None', '--'), ('5', 'None', '--'), ('7', 'PSC3', 'SAD1510034G'), ('8', 'SMC', 'SAD164400FV')]
      list(filter(lambda t:t[1] != 'None', lst))
      

      输出:

      [
       ('7', 'PSC3', 'SAD1510034G'),
       ('8', 'SMC', 'SAD164400FV')
      ]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多