如何为Python列表添加换行实现逐行输出展示效果
问题根因
拼接逻辑写错了,所有玩家信息自然挤成同一行出不来逐行效果:
- 你用列表推导式拿到的
players本身已经把每个在线玩家的名字单独存成了列表的独立元素 - 后面写的
lst = [f'{players}']属于多此一举,直接把整个装着所有玩家名的列表整体转成带方括号、引号的长字符串,再塞进一个只有这一个元素的新列表 - 拿这个新列表去用
'\n'.join()拼接的时候,因为列表里根本没有多个可拆分的元素,自然只会输出一整坨挤在一起的内容,完全就是第一张示例图的效果
实现逐行换行的改法
把冗余的单元素嵌套去掉,直接对存了单个玩家名的players列表做换行拼接即可,改完的核心代码:
@commands.command() #PLAYERS INFO async def players(self,ctx,ADD,NUM): with SampClient(address=ADD, port=NUM) as client: players = [client.name for client in client.get_server_clients()] joined = '\n'.join(players) await ctx.send(f'```{joined}```')
改完之后每个玩家名会单独占一行,和第二张示例图的展示效果一致。
实用性小优化
碰到服务器没有在线玩家的情况,原来的代码会发送一个空白代码块,可以加个简单判断优化体验:
@commands.command() #PLAYERS INFO async def players(self,ctx,ADD,NUM): with SampClient(address=ADD, port=NUM) as client: players = [client.name for client in client.get_server_clients()] if not players: await ctx.send("当前服务器暂无在线玩家") return joined = '\n'.join(players) await ctx.send(f'```{joined}```')
内容的提问来源于stack exchange,提问作者Game Video
相关产品推荐
相关产品推荐

