1

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

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

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

Python中switch语句的替换?

https://stackoverflow.com/questions/374239/why-doesnt-python-have-a-switch-statement

4

1 回答 1

4

你可以做这样的事情:

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

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

于 2012-04-11T12:03:48.717 回答