如何将此 random.choices python 列表转换为字符串?
Posted
技术标签:
【中文标题】如何将此 random.choices python 列表转换为字符串?【英文标题】:How can I convert this random.choices python list to a string? 【发布时间】:2020-10-10 20:53:49 【问题描述】:我正在使用 Python 制作 Discord 机器人,
我希望机器人对随机消息做出反应,使用random.choice
可以正常工作
不过,我想补充一点。我发现random.choices
(文档here)
您可以将权重添加到您的列表中,这样一些权重会比其他一些更频繁地被挑选。
现在我有:
@bot.event
async def on_member_join(channel):
time.sleep(2)
channel = bot.get_channel(723954693826674701)
brankos_greetings = [
"testMessageCommon1",
"testMessageCommon2",
"testMessageCommon3",
"testMessageCommon4",
"testMessageCommon5",
"testMessageCommon6",
"testMessageCommon7",
"testMessageCommon8",
"testMessageCommon9",
"testMessageCommon10",
"testMessageSemiRare1",
"testMessageSemiRare2",
"testMessageSemiRare3",
"testMessageSemiRare4",
"testMessageSemiRare5",
"testMessageSemiRare6",
"testMessageSemiRare7",
"testMessageRare1",
"testMessageRare2"
]
weights = [
0.077,
0.077,
0.077,
0.077,
0.077,
0.077,
0.077,
0.077,
0.077,
0.077,
0.03,
0.03,
0.03,
0.03,
0.03,
0.03,
0.03,
0.01,
0.01,
]
response = random.choices(brankos_greetings, weights, k = 1)
await channel.send(response)
但是,这会在聊天中提供以下输出:['testMessageCommon1'] ['testMessageRare1']
。等等
我尝试过:
response = str(random.choices(brankos_greetings, weights, k = 1))
和
await channel.send(str(response))
和
response = random.choices(brankos_greetings, weights, k = 1).strip('[]')
和
await channel.send(response.strip(['']))
但没有任何效果。
所以我的问题是:如何将这里的列表转换为字符串?
【问题讨论】:
我忘了补充 我也试过了 一个简单的问题:['who dis']
和 ['hi']
来自哪里?这些是您在brankos_greetings
中拥有的吗?
抱歉,机器人实际上是这么说的,但我在实际列表中将其更改为更好理解的内容。
是关于单词周围的 [] 和 ''
【参考方案1】:
我认为这可能有效
response = " ".join(response)
【讨论】:
【参考方案2】:您可以使用 join() 方法将字符串数组连接在一起。
response = ' '.join(random.choices(brankos_greetings, weights, k = 1))
【讨论】:
【参考方案3】:random.choices()
以列表形式返回结果。由于您有k=1
,这意味着返回的结果将是一个包含一个元素的列表。要将该元素作为消息发送,您需要索引并访问该元素。换句话说,
response = random.choices(brankos_greetings, weights, k = 1)
await channel.send(response[0]) # index the first (zeroth) element
【讨论】:
非常感谢,已解决! 很高兴它有帮助!以上是关于如何将此 random.choices python 列表转换为字符串?的主要内容,如果未能解决你的问题,请参考以下文章