我想将带有颜色的标题打印到控制台,但似乎会影响间距。为什么它会忽略间距?
yellow = lambda text: '\033[0;33m' + text + '\033[0m'
print(f"{yellow('Header1'):<15} {'Header2':<15} Header2")
输出:
标题1 标题2 标题3
len(yellow('Header1'))
输出:
18
显然,在将字符解释为颜色信息之前,添加空格的长度被评估。我认为这是有道理的,因为颜色可能只在稍后由 sys.stdout
解释。
例如,如果您执行以下操作,则会返回一些空格:
输入:
yellow = lambda text: '\033[0;33m' + text + '\033[0m'^M
print(f"{yellow('Header1'):<20} {'Header2':<15} Header2")
输出:
Header1 Header2 Header2
print(f"{yellow('Header1'):<15} {'Header2':<15} Header2")
print(f"{'\033[0;33mHeader1\033[0m':<15} {'Header2':<15} Header2")
您可以看到长度超过15个字符。一旦语句被打印,您的控制台将转换特殊字符并将Header1
更改为黄色文本。要解决此问题,您可以在{'Header1':<15}
格式之外添加黄色填充。
类似以下内容可能有效:
print(yellow(f'{'Header1':<15}') + f' {'Header2':<15} Header2")