python中字典搜索结果的回调函数

python中字典搜索结果的回调函数,python,Python,我有一个现有的python脚本,它可以根据正则表达式字典检查文件。如果该文件包含一个正则表达式,我注意到已命中字典,请打印包含该文件的行,然后继续。很简单 但是,我现在想为文件中遇到的每个RE建立一个不同的回调函数。我对如何在长if/elseif块之外的python中实现这一点感到困惑。这是不是应该用PERL来完成的?(这意味着我必须重新编写相当多的代码,因此首先不这样做的原因) 我已经查看了这些(甚至是文章中的链接)以寻找可能的解决方法,但还没有看到任何可行的方法: 您可以这样做: def

我有一个现有的python脚本,它可以根据正则表达式字典检查文件。如果该文件包含一个正则表达式,我注意到已命中字典,请打印包含该文件的行,然后继续。很简单

但是,我现在想为文件中遇到的每个RE建立一个不同的回调函数。我对如何在长if/elseif块之外的python中实现这一点感到困惑。这是不是应该用PERL来完成的?(这意味着我必须重新编写相当多的代码,因此首先不这样做的原因)

我已经查看了这些(甚至是文章中的链接)以寻找可能的解决方法,但还没有看到任何可行的方法:


您可以这样做:

def callback1(line, regex_match):
   #do what you want

def callback2(line, regex_match):
   #do what you want... else


regex_dict = {
   "first_regex" : callback1,
   "second_regex" : callback2,
}

file_to_check = open("the_file")
for line in file_to_check:
    for regex, callback in regex_dict.iteritems():
        result = re.match(regex, line)
        if result:
           callback(line, result)
           break

然后,在每个正则表达式匹配中,您将调用与该行和正则表达式结果关联的回调。

您可以执行以下操作:

def callback1(line, regex_match):
   #do what you want

def callback2(line, regex_match):
   #do what you want... else


regex_dict = {
   "first_regex" : callback1,
   "second_regex" : callback2,
}

file_to_check = open("the_file")
for line in file_to_check:
    for regex, callback in regex_dict.iteritems():
        result = re.match(regex, line)
        if result:
           callback(line, result)
           break

然后,在每个正则表达式匹配中,您将调用与该行和正则表达式结果相关联的回调。

每个重新命中的回调函数是否都是相同的函数?如果是这样,您可以将该函数与计数一起存储在字典中,然后调用它。不,我希望每个RE都有一个不同的回调函数。每个RE命中的回调函数是否相同?如果是这样的话,您可以将该函数与计数一起存储在字典中,然后调用它。不,我希望每个RE都有一个不同的回调函数。