为我的机器人提供一个命令,从文本文件中随机选择一行并将其分配给变量。我在每一行的末尾都有一个数字(这里是我的行)。代码应该做的是将行的最后一个字符(现在是分配给变量的字符串)分配给变量
问题是,它就是不能做到这一点。嗯,它只执行文本文件中的最后一行。不管random.choice()
函数得到哪一行,它总是只对文本文件的最后一行起作用
@commands.command()
async def slap_t(self, ctx, member : discord.Member):
with open('docs/slap_t.txt') as f:
slap_responses = f.readlines()
f.close()
slap= random.choice(slap_responses)
gif_num = slap[-1]
print(f"response: {slap}")
print(f"gif num = {gif_num}")
这是因为
slap_responses
中的其他行在末尾包括\n
(换行符)。请用slap_responses = f.read().splitlines()
而不是slap_responses = f.readlines()
重试。这将从每一行中剥离尾随的换行符,并将这些行存储在列表slap_responses
中readlines()
不会从每一行中删除\n
。因此,在代码中slap[-1]
将返回这个换行符,这可能不是您想要的相关问题 更多 >
编程相关推荐