首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过`.join`格式化不和谐消息时的麻烦

通过`.join`格式化不和谐消息时的麻烦
EN

Stack Overflow用户
提问于 2018-07-31 04:00:40
回答 3查看 370关注 0票数 0

我想让我的信息看起来像:

禁令名单: ·用户1 ID (用户1 Name#User 1鉴别器) ·用户2 ID (用户2 Name#User 2鉴别器) ·用户3 ID (用户3 Name#User 3鉴别器)

我已经在列表格式中获得了用户的id、名称和鉴别器,只是不知道如何使其格式正确。我已经和.format.join混了很长一段时间了,但是我想不出如何在没有每一条新的数据的情况下按正确的顺序得到它。

作为参考,这就是我的代码现在的样子:

代码语言:javascript
运行
复制
userid = ['User 1 ID', 'User 2 ID', 'User 3 ID']
name = ['User 1 Name', 'User 2 Name', 'User 3 Name']
discriminator = ['User 1 Disc', 'User 2 Disc', 'User 3 Disc']

total = list(chain.from_iterable(zip(userid, name, discriminator)))


await client.send_message(message.channel, "**Ban List:** \n •<@{}>".format(">\n• <@".join(total)))

这一产出如下:

禁令名单: @User 1 ID ·<@用户1 Name> ·<@用户1 Disc> @User 2 ID ·<@User 2 Name> ·<@User 2 Disc> @User 2 ID ·<@User 2 Name> ·<@User 2 Disc>

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-31 04:56:55

试试下面的代码,它不是单数,但我想它更易读

代码语言:javascript
运行
复制
userid = ['User 1 ID', 'User 2 ID', 'User 3 ID']
name = ['User 1 Name', 'User 2 Name', 'User 3 Name']
discriminator = ['User 1 Disc', 'User 2 Disc', 'User 3 Disc']

total = list((zip(userid, name, discriminator)))

# reformat the code into the desired formatting
pretty_list = set()
for details in total:
    data = "•<@{} ({}#{})>".format(details[0], details[1], details[2]) 
    pretty_list.add(data)

# debug print below
# print("**Ban list:** \n{}".format("\n".join(pretty_list)))

await client.send_message(message.channel, "**Ban list:** \n{}".format("\n".join(pretty_list)))

古德勒克:)

票数 1
EN

Stack Overflow用户

发布于 2018-07-31 04:25:47

您可以尝试以下代码:

代码语言:javascript
运行
复制
userid = ['User 1 ID', 'User 2 ID', 'User 3 ID']
name = ['User 1 Name', 'User 2 Name', 'User 3 Name']
discriminator = ['User 1 Disc', 'User 2 Disc', 'User 3 Disc']

total = zip(userid, name, discriminator)

await client.send_message(message.channel, "**Ban List:** \n{}".format("\n".join(["• {}".format(" ".join(list(item))) for item in total])))
票数 0
EN

Stack Overflow用户

发布于 2018-07-31 06:08:27

这里有一个单线(ish)解决方案:

代码语言:javascript
运行
复制
userid = ['User 1 ID', 'User 2 ID', 'User 3 ID']
name = ['User 1 Name', 'User 2 Name', 'User 3 Name']
discriminator = ['User 1 Disc', 'User 2 Disc', 'User 3 Disc']

#convert [['a1', 'a2'], ['b1', 'b2']] to iter([('a1', 'b1'), ('a2', 'b2')])
total = zip(userid, name, discriminator)

await client.send_message(message.channel, "**Ban List:**\n"
                          + "\n".join("• {} ({}#{})".format(*i) for i in total))

产出应是:

禁令名单: ·用户1 ID (用户1 Name#User 1光盘) ·用户2 ID (用户2 Name#User 2光盘) ·用户3 ID (用户3 Name#User 3光盘)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51605270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档