Python Bot自动更正

时间:2018-06-17 08:46:40

标签: python python-3.x discord discord.py

是否可以添加一个选项来自动更正机器人回复中的单词。示例:在我们使用?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)

2 个答案:

答案 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}}

这似乎是最快捷的方式,但如果你想要更多的东西......自动它需要更多的努力

编辑:通过更多的努力,我的意思是你需要创建一个不同的消息功能,它必须检查每个字典被称为

相关问题