re.findall()在python中返回空列表?

时间:2017-12-19 05:11:16

标签: python dictionary

我的python方法定义如下。我尝试匹配与 clientname 参数

匹配的字典元素
def loadSites(self, fpath, clientname):

            keylist = [re.findall(clientname,k) for k in self.cacheDictionary.keys()]
            for items in keylist:
                print(items)

当我打印列表时,我得到了;

['testClient']
['testClient']
[]
[]
[]
[]

我希望只有两个元素。我在这里做错了什么?

另外,如何从字典中删除该项?

2 个答案:

答案 0 :(得分:1)

如果只想在匹配时返回两个元素。

keylist = [re.findall(clientname,k) if(re.findall(clientname,k)) else None for k in self.cacheDictionary.keys()]
        for items in keylist:
            print(items)

答案 1 :(得分:1)

如果找不到模式,

re.findall将返回空{{1}}。您可以简单地filter这些。请注意,当您迭代{{1}}时,会自动迭代键:

{{1}}

更新

如果你想删除与你的模式匹配的dict中的所有键,并且实际上包含字符串,那么有许多选项不需要正则表达式,例如:

{{1}}

或者只是在一次迭代中理解一个新的{{1}}表单划痕:

{{1}}