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

Python控制台输出格式化:自定义符号框架运行错位问题求解

解决Python控制台带颜色框架错位问题

核心问题原因

控制台框架错位的本质是字符显示宽度不统一:

  • 中文、全角符号占2个控制台字符宽度,ASCII字符、半角符号占1个
  • colorama的颜色控制代码(如Fore.GREEN)会被len()统计为字符数,但实际不显示,导致长度计算偏差

具体解决方案

1. 安装依赖库

先安装wcwidth来准确计算字符的实际显示宽度:

pip install wcwidth colorama

2. 关键工具函数

写一个函数,剥离colorama颜色代码后,计算文本的实际显示宽度:

from wcwidth import wcswidth
from colorama import Fore, Back, Style

def get_display_width(text):
    # 剥离colorama的颜色控制序列
    control_codes = [Fore.BLACK, Fore.RED, Fore.GREEN, Fore.YELLOW, Fore.BLUE, Fore.MAGENTA, Fore.CYAN, Fore.WHITE,
                     Fore.RESET, Back.BLACK, Back.RED, Back.GREEN, Back.YELLOW, Back.BLUE, Back.MAGENTA, Back.CYAN, Back.WHITE,
                     Back.RESET, Style.DIM, Style.NORMAL, Style.BRIGHT, Style.RESET_ALL]
    cleaned_text = text
    for code in control_codes:
        cleaned_text = cleaned_text.replace(code, "")
    # 返回实际显示宽度
    return wcswidth(cleaned_text)

3. 框架生成逻辑

基于实际显示宽度构建对齐的框架,示例代码:

import os
import time
from colorama import init, Fore, Style

init(autoreset=True)

# 系统信息获取
os_info = f"{Fore.GREEN}操作系统: {os.name} {os.uname().sysname} {os.uname().release}"
run_time = f"{Fore.CYAN}运行时间: {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())}"

# 框架配置
frame_char = "*"
frame_width = 60  # 控制台框架总宽度(按显示宽度算)

# 生成顶部边框
top_border = frame_char * frame_width
print(top_border)

# 处理每行内容,居中对齐并补全框架
for line in [os_info, run_time]:
    content_width = get_display_width(line)
    # 计算左右需要填充的空格数(总宽度-内容宽度,平分)
    left_pad = (frame_width - content_width) // 2
    right_pad = frame_width - content_width - left_pad
    # 拼接框架行
    frame_line = f"{frame_char}{' ' * left_pad}{line}{' ' * right_pad}{frame_char}"
    print(frame_line)

# 生成底部边框
bottom_border = frame_char * frame_width
print(bottom_border)

额外注意事项

  • 确保控制台使用等宽字体(如Consolas、Monaco),非等宽字体也会导致错位
  • 如果需要更复杂的多行内容,可封装成类来统一处理宽度计算和对齐
  • 若使用Windows系统,确保colorama.init()正确初始化(默认autoreset=True会自动重置颜色,避免后续文本继承颜色)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 23:50:00