You need to enable JavaScript to run this app. 如何为Python列表添加换行实现逐行输出展示效果
优惠活动
大模型
产品
解决方案
定价
更多

如何为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.31 13:36:02