Python字典搜索结果的回调函数

2024-09-25 08:28:03 发布

您现在位置:Python中文网/ 问答频道 /正文

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

不过,我现在想为每个文件命中的RE创建一个不同的回调函数。我很困惑在一个很长的if/elseif块之外如何在python中实现这一点。在这种情况下,应该用PERL来完成吗?(这意味着我必须重写相当多的代码,因此我首先没有这样做的原因)。在

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

Replacements for switch statement in Python?

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


Tags: 文件方法函数代码re脚本if字典
1条回答
网友
1楼 · 发布于 2024-09-25 08:28:03

你可以这样做:

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

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

相关问题 更多 >