当前位置: 首页 > 面试题库 >

选择要基于正则表达式调用的Python函数

卫才
2023-03-14
问题内容

是否可以在不先给函数命名的情况下将函数放入数据结构中def

# This is the behaviour I want. Prints "hi".
def myprint(msg):
    print msg
f_list = [ myprint ]
f_list[0]('hi')
# The word "myprint" is never used again. Why litter the namespace with it?

lambda函数的主体受到严格限制,因此我不能使用它们。

编辑:作为参考,这更像是我遇到问题的真实代码。

def handle_message( msg ):
    print msg
def handle_warning( msg ):
    global num_warnings, num_fatals
    num_warnings += 1
    if ( is_fatal( msg ) ):
        num_fatals += 1
handlers = (
    ( re.compile( '^<\w+> (.*)' ), handle_message ),
    ( re.compile( '^\*{3} (.*)' ), handle_warning ),
)
# There are really 10 or so handlers, of similar length.
# The regexps are uncomfortably separated from the handler bodies,
# and the code is unnecessarily long.

for line in open( "log" ):
    for ( regex, handler ) in handlers:
        m = regex.search( line )
        if ( m ): handler( m.group(1) )

问题答案:

我认为创建匿名函数的困难有点让人头疼。您真正想要做的是将相关代码保持在一起,并使代码整齐。因此,我认为装饰师可能会为您工作。

import re

# List of pairs (regexp, handler)
handlers = []

def handler_for(regexp):
    """Declare a function as handler for a regular expression."""
    def gethandler(f):
        handlers.append((re.compile(regexp), f))
        return f
    return gethandler

@handler_for(r'^<\w+> (.*)')
def handle_message(msg):
    print msg

@handler_for(r'^\*{3} (.*)')
def handle_warning(msg):
    global num_warnings, num_fatals
    num_warnings += 1
    if is_fatal(msg):
        num_fatals += 1


 类似资料:
  • 问题内容: 我正在寻找有关通过jQuery选择器使用通配符或正则表达式(不确定确切术语)的文档。 我自己寻找了此信息,但无法找到有关语法以及如何使用它的信息。有谁知道语法的文档在哪里? 编辑:属性过滤器使您可以基于属性值的模式进行选择。 问题答案: James Padolsey创建了一个很棒的过滤器,允许使用正则表达式进行选择。 说您有以下内容: Padolsey的过滤器可以像这样选择它: 另外,

  • Vim是一个文本编辑器,这意味着大量的Vimscript代码将专注于处理文本。 Vim对正则表达式有着强大的支持,尽管一如既往地也有着一些坑。 把下面的文本打到缓冲区中: :::text max = 10 print "Starting" for i in range(max): print "Counter:", i print "Done" 这个就是我们将用来测试Vimscri

  • null 为此,使用mvel语句实现了一个elastica脚本,以支持正则表达式匹配。换句话说,它检查左边的值是否与右边的正则表达式匹配(只有这样一个变量才会相应地递增)。但不幸的是,当搜索字符串是特定于语言的时,就会出错,尽管左边的值也是指定的语言。另一个需要处理的问题是我上面提到的第二种情况(无法使其工作)。 当一个值(“一个示例”(属于name字段))以给定的单词('one')开头时,脚本工

  • 问题内容: 我想获取HTML中隐藏的输入字段的值。 我想用Python编写一个正则表达式,该表达式将返回的值,因为我知道HTML中的行遵循以下格式 有人可以提供Python范例来解析HTML值吗? 问题答案: 对于这种特殊情况,BeautifulSoup比正则表达式更难编写,但是它更健壮…我只是为BeautifulSoup示例提供帮助,因为您已经知道要使用哪个正则表达式:-)

  • 我想验证只包含Select查询的字符串。不管怎么说,还是要这么做的??查询

  • 我正在努力想出一个正则表达式,它只能在单词的开头找到符号。例如: 这里: 但不是这里: