我试图从一个文件中加载正则表达式模式列表,我希望它将每个正则表达式条目拖入一个数组中,以便以后可以匹配传入的文本模式,然后基于它们触发一个动作。我已经完成了re.search()的工作,但是我怎样才能从文件中加载正则表达式模式,然后用re.search()函数扫描从文件中拉出的各种正则表达式模式,论据?Python:将数据从文件加载到IRC bot中
0
A
回答
2
如果要在正则表达式的文本模式匹配来触发一个动作,你可能需要正则表达式的一些映射到行动(让我们假设它是在同一个文件中定义的映射函数的引用)。说我们在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)
当然,这取决于您想要如何触发该操作,但我希望主要原则很明确。
1
# pre-compile regexes:
with open('regex_file.txt') as f:
regexes = [re.compile(regex.strip()) for regex in f]
# use them
for regex in regexes:
m = regex.search(text)
if m:
print 'got match!!'
相关问题
- 1. Python将变量从文件加载到数组中
- 2. 将数据从文本文件加载到数组中
- 3. 将数据加载到json文件中
- 4. 将数据从文本文件加载到oracle中的表中
- 5. IRC BOT(蟒蛇)
- 6. 将数据从文件加载到二维数组中
- 7. 将数据从CSV文件加载到D3中的lineWithFocusChart中
- 8. 从文件中将数据加载到Postgres中
- 9. Python/Twisted IRC bot日志记录问题
- 10. Python IRC bot和编码问题
- 11. 不良链接崩溃Python IRC bot
- 12. IRC Bot反发誓
- 13. wiki链接(irc bot)
- 14. IRC中的插件权限Bot
- 15. 将数据从XML文件加载到XNA 4.0中
- 16. 从JSON文件将数据加载到Backbone集合中?
- 17. 将数据从文件加载到表中
- 18. 从Python中的文件加载参数
- 19. 如何将数据从RichTextBox保存到文件或从文件中加载
- 20. python将字典数据加载到csv文件
- 21. 将输入数据保存到文件中并从文件中加载
- 22. 将数据文件追加到使用python的文件中
- 23. 将数据加载到文本框中
- 24. 通过Bot构建irc bot困难:: BasicBot
- 25. 从JSON文件加载变量到Python
- 26. 将数据加载到“from workspace”块simulink从.m文件
- 27. 将文本文件中的数据加载到ListView中
- 28. 从文件中加载数据C
- 29. 将多维数组加载到C++中的数据文件中
- 30. 将数据从XML文件批量加载到MySQL
你可能会看看一些已经存在的IRC机器人。例如[pmxbot](https://bitbucket.org/yougov/pmxbot/src)可以让您轻松查看某些字符串并采取适当的行动。 – chmullig 2011-02-04 16:11:13
我正在尝试为特定的IRC bot框架创建一个模块,因此我需要对此进行简要的了解。 – 2011-02-04 20:17:03