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

从defaultdict(list)打印键值对及Cisco WLC SSH程序打印异常问题

解决Cisco WLC客户端摘要报告的打印格式问题

你已经搞定了SSH连接和数据解析的核心环节,就差打印输出的格式规整度了。咱们来调整下代码,让报告排版更清晰易读:

优化后的打印代码

# 先统计所有值列表的最大长度,保证所有列能对齐
max_col_num = max(len(v) for v in e.values()) if e else 0
# 自定义列宽:键列留30位足够容纳AP名称,数值列设为8位保证排版整齐
key_col_width = 30
value_col_width = 8

for k, v in e.items():
    # 键左对齐占满key_col_width位
    print(f'{k:<{key_col_width}}', end='')
    # 逐个打印对应的值,每个值左对齐占value_col_width位
    for item in v:
        print(f'{item:<{value_col_width}}', end='')
    # 如果当前值列表长度不足最大列数,补空格对齐
    for _ in range(max_col_num - len(v)):
        print(' ' * value_col_width, end='')
    print()

原代码格式问题的原因

  • 原代码里'{:25}'.format(k)是默认右对齐,短键(比如"AP Count")会在左侧补大量空格,而不是右侧,导致视觉上的错乱;改成'{:<25}'就能实现左对齐,让键紧贴左侧排列。
  • 数值列的'{:5}'.format(i)同样是右对齐,不同长度的内容会出现排版错位,改用左对齐的固定宽度格式化会更规整。
  • 原代码的print("\n")会输出两个换行符,导致行间距过大,用单个print()就能只换一行。

额外优化:让报告更贴近设备原生风格

如果你的字典e里包含表头项(比如"AP Count"对应统计标题),可以给报告加上表头和分隔线,可读性会更强:

if e:
    # 提取并打印表头
    header_key, header_vals = next(iter(e.items()))
    print(f'{header_key:<{key_col_width}}', end='')
    for val in header_vals:
        print(f'{val:<{value_col_width}}', end='')
    print()
    # 打印分隔线
    print('-' * (key_col_width + max_col_num * value_col_width))
    # 打印后续数据行
    for k, v in list(e.items())[1:]:
        print(f'{k:<{key_col_width}}', end='')
        for item in v:
            print(f'{item:<{value_col_width}}', end='')
        for _ in range(max_col_num - len(v)):
            print(' ' * value_col_width, end='')
        print()

这样输出的报告结构清晰,和Cisco WLC原生的show client summary输出风格一致,看起来更专业。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:03:50