You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中print命令不符合预期,求助排查打印格式问题

解决Python print输出列表而非竖列的问题

嗨,我明白你的问题啦!你现在直接打印整个列表对象,Python会默认输出它的字符串表示形式,也就是你看到的带方括号和引号的横向格式。要实现每行一个用户名的竖列输出,有几种简单的方法可以修改你的代码:

方法1:遍历列表逐个打印

这是最直观的方式,拿到返回的用户列表后,循环每个元素并单独打印:

if __name__ == "__main__":
    users = parse_file()
    for user in users:
        print(user)

这样每个用户都会被单独输出一行,完美实现竖列显示的需求。

方法2:用换行符连接列表元素打印

如果你想更简洁一点,可以用str.join()方法把列表里的所有用户用换行符\n连接成一个字符串,再一次性打印:

if __name__ == "__main__":
    print('\n'.join(parse_file()))

这个方法会把列表中的每个元素拼接成一个大字符串,元素之间用换行符分隔,打印出来自然就是每行一个用户。

另外,如果你希望去掉重复的用户名(比如多次出现的admin只显示一次),可以先把列表转成集合去重,再转回列表排序:

def parse_file():
    users = []
    filename = "auth.log"
    file = open(filename, 'r')
    string = "invalid user"
    for i in file:
        i = i.lower()
        pos = i.find(string)
        if pos >= 0:
            index = pos + len(string) + 1
            user = i[index:].split(" ")[0]
            users.append(user)
    # 去重后排序
    users = sorted(list(set(users)))
    return users

不过这一步是可选的,看你实际需求来决定要不要加~

内容的提问来源于stack exchange,提问作者Dante Duong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:29:21