Python:将数据从文件加载到IRC bot

Python:将数据从文件加载到IRC bot,python,python-2.6,Python,Python 2.6,我试图从一个文件中加载一个regex模式列表,我希望它将每个regex条目拉入一个数组,该数组稍后可用于匹配传入的文本模式,然后基于它们触发一个操作 我已经掌握了使re.search()工作的诀窍,但是如何从文件中加载正则表达式模式,然后使用re.search()参数扫描从文件中提取的各种正则表达式模式?如果要在正则表达式与文本模式匹配时触发操作,可能需要一些正则表达式到操作的映射(假设它是对与映射在同一文件中定义的函数的引用)。假设我们在python文件rules.py中定义规则,如下所示:

我试图从一个文件中加载一个regex模式列表,我希望它将每个regex条目拉入一个数组,该数组稍后可用于匹配传入的文本模式,然后基于它们触发一个操作


我已经掌握了使re.search()工作的诀窍,但是如何从文件中加载正则表达式模式,然后使用re.search()参数扫描从文件中提取的各种正则表达式模式?

如果要在正则表达式与文本模式匹配时触发操作,可能需要一些正则表达式到操作的映射(假设它是对与映射在同一文件中定义的函数的引用)。假设我们在python文件
rules.py
中定义规则,如下所示:

mappings = [
    # (regex, action_name)
    (r'Hi ([a-z]+)!', greet),
    (r'Bye', bye),
]

def greet(msg):
    return 'Hello'

def bye(msg):
    return 'Bye'
main.py
中,导入映射,编译所有正则表达式(一次性操作以避免每次搜索都重新编译它们),然后对传入消息进行搜索

import rules

# compile regex
compiled = dict([(re.compile(regex), action_name) for (regex, action_name) in rules.mappings])

def incoming(msg):
    for regex, action_name in compiled:
        if regex.search(msg):
            # if search is successfull, execute action
            action_function = getattr(rules, action_name)
            action(msg)

当然,这取决于您想如何触发该操作,但我希望主要原则是明确的。

如果您想在正则表达式匹配文本模式时触发操作,您可能需要正则表达式到该操作的一些映射(假设它是对与映射在同一文件中定义的函数的引用)。假设我们在python文件
rules.py
中定义规则,如下所示:

mappings = [
    # (regex, action_name)
    (r'Hi ([a-z]+)!', greet),
    (r'Bye', bye),
]

def greet(msg):
    return 'Hello'

def bye(msg):
    return 'Bye'
main.py
中,导入映射,编译所有正则表达式(一次性操作以避免每次搜索都重新编译它们),然后对传入消息进行搜索

import rules

# compile regex
compiled = dict([(re.compile(regex), action_name) for (regex, action_name) in rules.mappings])

def incoming(msg):
    for regex, action_name in compiled:
        if regex.search(msg):
            # if search is successfull, execute action
            action_function = getattr(rules, action_name)
            action(msg)

当然,这取决于您希望如何触发该操作,但我希望主要原则是明确的。

您可以查看一些现有的IRC机器人程序。例如,可以轻松地查看某些字符串并采取适当的行动。我正在尝试为特定的IRC机器人程序框架制作一个模块,因此我需要对此有一个简要的了解。您请看一些已经存在的IRC bot。例如,可以很容易地查看某些字符串并采取适当的行动。我正在尝试为特定的IRC bot框架制作一个模块,因此我需要对此有一个简要的了解。如果我试图从文本文件加载,我将如何修改代码以匹配该字符串?谢谢,这非常有用。:)如果我试图从文本文件加载,我将如何修改代码以匹配它?谢谢,这非常有用。:)