是否可以添加一个选项来自动更正机器人回复中的单词。示例:在我们使用?ping
的下面的代码中,它会回复hello i'm in USA now going to UK tomorrow
,但它应该自动更正Autocorrect_List
提供的字词,它应该回复hello i'm in United States Of America now going to United KingDom tomorrow
Autocorrect_List = [USA = United States Of America, UK = United KingDom]
@bot.command(pass_context=True)
async def ping(ctx):
msg = "hello i'm in USA now going to UK tomorrow".format(ctx.message)
await bot.say(msg)
答案 0 :(得分:1)
你只需要一个循环和大量的替换。自动更正"列表"应该是一个字典,因为dict是Python的映射类型。
autocorrect = {'USA': 'United States Of America', 'UK': 'United Kingdom'}
msg = "hello i'm in USA now going to UK tomorrow"
for k, v in autocorrect.items():
msg = msg.replace(k, v)
print(msg)
# hello i'm in United States Of America now going to United Kingdom tomorrow
您执行该操作的方式效率极低,您应该考虑保存邮件的基本格式(使用已替换的邮件),而不是在重复使用时生成所有内容。
考虑使用Skilledfire的解决方案,或者如果您使用的是python 3.6+,则可以使用f-string格式:
d = {'USA': 'United States Of America', 'UK': 'United Kingdom'}
msg = f"hello i'm in {d['USA']} now going to {d['UK']} tomorrow"
print(msg)
# hello i'm in United States Of America now going to United Kingdom tomorrow
这可以使你的字符串在提高它的效率水平时有些可读。但最好的方法仍然是在更换消息后保存消息。
功能:
def f(msg):
for k, v in autocorrect.items():
msg = msg.replace(k, v)
return msg
您可以将其用作:
correct_string = f(old_string)
答案 1 :(得分:0)
是的,你能做到这一点,怎么样:
{{1}}
这似乎是最快捷的方式,但如果你想要更多的东西......自动它需要更多的努力
编辑:通过更多的努力,我的意思是你需要创建一个不同的消息功能,它必须检查每个字典被称为