如何用另一个词替换一行中的多个词
How to replace multiple words in a line with another words
我最近开始在 discord.py 中构建一个机器人,但在这里遇到了这种情况
@client.command()
async def replace(ctx, *, arg):
msg = f"{arg}" .format(ctx.message).replace('happe', '<:happe:869470107066302484>')
await ctx.send(msg)
这是一个用表情符号替换单词“happe”的命令,因此看起来像:
Command : {prefix}replace 我很高兴
结果:我很“开心”
但我想做到这一点,这样我们就可以用不同的表情符号替换多个单词,而不仅仅是像
这样的单个单词
命令:{prefix}replace i am not happe, i am sad
结果:我不是“开心表情”,我是“伤心表情”
有没有办法像使用 json 制作表情符号列表及其 ID 的文件一样,在一个句子中编辑多个单词?
此命令似乎在 cogs 中也不起作用,并表示命令无效
is there a way to edit multiple words in just one sentence like using a json file ot making a list of emojis and its id?
是的,你可以做到这一点。列出单词-表情符号对并遍历所有这些以替换每个单词。
async def replace(ctx, *, arg):
l = [("happe", "<:happe:869470107066302484>"), ("sad", "..."), ...]
msg = arg # Making a copy here to avoid editing the original arg in case you want to use it at some point
for word, emoji in l:
msg = msg.replace(word, emoji)
await ctx.send(msg)
also this command doesnt seems to work in cogs and says command is invalid
在 cogs 中装饰器是 @commands.command()
,不是 @client.command()
。不要忘记 from discord.ext import commands
导入以访问它。
最后,我有点困惑 f"{arg}" .format(ctx.message)
应该做什么?您可以完全删除 .format
和 f-string
。 args
已经是一个 string
所以把它放在一个 f-string
中没有任何其他效果,并且 .format(ctx.message)
也没有做任何事情。整个事情的结果与 arg
.
相同
>>> arg = "this is the arg"
>>> f"{arg}".format("this has no effect")
'this is the arg'
我最近开始在 discord.py 中构建一个机器人,但在这里遇到了这种情况
@client.command()
async def replace(ctx, *, arg):
msg = f"{arg}" .format(ctx.message).replace('happe', '<:happe:869470107066302484>')
await ctx.send(msg)
这是一个用表情符号替换单词“happe”的命令,因此看起来像:
Command : {prefix}replace 我很高兴
结果:我很“开心”
但我想做到这一点,这样我们就可以用不同的表情符号替换多个单词,而不仅仅是像
这样的单个单词命令:{prefix}replace i am not happe, i am sad
结果:我不是“开心表情”,我是“伤心表情”
有没有办法像使用 json 制作表情符号列表及其 ID 的文件一样,在一个句子中编辑多个单词? 此命令似乎在 cogs 中也不起作用,并表示命令无效
is there a way to edit multiple words in just one sentence like using a json file ot making a list of emojis and its id?
是的,你可以做到这一点。列出单词-表情符号对并遍历所有这些以替换每个单词。
async def replace(ctx, *, arg):
l = [("happe", "<:happe:869470107066302484>"), ("sad", "..."), ...]
msg = arg # Making a copy here to avoid editing the original arg in case you want to use it at some point
for word, emoji in l:
msg = msg.replace(word, emoji)
await ctx.send(msg)
also this command doesnt seems to work in cogs and says command is invalid
在 cogs 中装饰器是 @commands.command()
,不是 @client.command()
。不要忘记 from discord.ext import commands
导入以访问它。
最后,我有点困惑 f"{arg}" .format(ctx.message)
应该做什么?您可以完全删除 .format
和 f-string
。 args
已经是一个 string
所以把它放在一个 f-string
中没有任何其他效果,并且 .format(ctx.message)
也没有做任何事情。整个事情的结果与 arg
.
>>> arg = "this is the arg"
>>> f"{arg}".format("this has no effect")
'this is the arg'