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)
说明
- 用
splitlines()把原始ASCII艺术拆分成单独的行列表 - 过滤掉空行(避免输出多余的空居中行)
- 对每一行单独调用
center(终端宽度),这里用50作为示例宽度,你可以根据实际需求调整 - 最后用
'\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
相关产品推荐
相关产品推荐

