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

Python中实现多行文本(ASCII艺术)在终端居中显示的问题

解决多行ASCII艺术终端居中问题

问题核心:直接把多行ASCII拼接成单个字符串后调用center(),只会给整个字符串的开头补空格,后续行不会单独对齐,导致只有首行居中。

错误代码示例

# 原始错误代码
ascii_art = """
  _______
 |       |
 |   O   |
 |  /|\  |
 |  / \  |
 |_______|
"""
# 拼接后直接调用center,仅首行居中
centered_art = ascii_art.center(50)
print(centered_art)

错误输出(示意)

_______
 |       |
 |   O   |
 |  /|\  |
 |  / \  |
 |_______|

正确解决方案

逐行处理每一行文本,对每行单独执行center(),再重新拼接成完整字符串:

ascii_art = """
  _______
 |       |
 |   O   |
 |  /|\  |
 |  / \  |
 |_______|
"""
# 分割成行,过滤空行,逐行居中
lines = [line.center(50) for line in ascii_art.splitlines() if line.strip()]
# 重新拼接成带换行的字符串
centered_art = '\n'.join(lines)
print(centered_art)

说明

  1. 用splitlines()把原始ASCII艺术拆分成单独的行列表
  2. 过滤掉空行(避免输出多余的空居中行)
  3. 对每一行单独调用center(终端宽度),这里用50作为示例宽度,你可以根据实际需求调整
  4. 最后用'\n'.join()把处理后的行重新组合成完整的居中ASCII艺术

动态适配终端宽度的优化版本

import os

ascii_art = """
  _______
 |       |
 |   O   |
 |  /|\  |
 |  / \  |
 |_______|
"""

terminal_width = os.get_terminal_size().columns
lines = [line.center(terminal_width) for line in ascii_art.splitlines() if line.strip()]
centered_art = '\n'.join(lines)
print(centered_art)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:01:05