如何将pyfiglet生成的字符艺术文本居中?center()方法无效有什么解决办法?
问题根因
shutil.get_terminal_size()返回的是包含终端列数、行数的结构体对象,不能直接作为center()的入参,需要取它的columns属性拿到终端宽度数值figlet_format()生成的是多行拼接的ASCII艺术字符串,直接对整个字符串调用center()不会单独处理每一行的对齐,因此看不到居中效果
可用解决方案
方案1:使用pyfiglet内置的对齐参数(推荐)
figlet_format本身自带对齐配置,直接指定justify和width参数即可实现居中,无需手动处理字符串:
from pyfiglet import figlet_format import shutil x = figlet_format( "mogus", font="standard", justify="center", width=shutil.get_terminal_size().columns ) print(x)
方案2:逐行处理字符串后拼接
如果需要自定义对齐逻辑,可以拆分多行字符串,对每一行单独调用居中方法后再拼接输出:
from pyfiglet import figlet_format import shutil term_width = shutil.get_terminal_size().columns x = figlet_format("mogus", font="standard") # 逐行居中后拼接为新的多行字符串 centered_content = "\n".join([line.center(term_width) for line in x.splitlines()]) print(centered_content)
内容的提问来源于stack exchange,提问作者ysol100
相关产品推荐
相关产品推荐

