python 将颜色打印到控制台时出现间距问题
python spacing issue when printing color to console
我正在尝试将彩色 headers 打印到控制台,但它似乎弄乱了间距。为什么它会忽略间距?
yellow = lambda text: '3[0;33m' + text + '3[0m'
print(f"{yellow('Header1'):<15} {'Header2':<15} Header2")
输出:
Header1 Header2 Header2
因为它使用lambda函数返回的文本来计算字符串长度:
在:
len(yellow('Header1'))
输出:
18
显然,在将字符解释为颜色信息之前评估添加空格的长度。我认为这是有道理的,因为颜色可能仅在以后由 sys.stdout
.
解释
例如,如果您执行以下操作,您将获得一些空间:
在:
yellow = lambda text: '3[0;33m' + text + '3[0m'^M
print(f"{yellow('Header1'):<20} {'Header2':<15} Header2")
输出:
Header1 Header2 Header2
问题是您为黄色添加的填充。这是格式字符串在第 2 行转换成的内容:
初始版本
print(f"{yellow('Header1'):<15} {'Header2':<15} Header2")
黄色('Header1')被评估后
print(f"{'3[0;33mHeader13[0m':<15} {'Header2':<15} Header2")
可以看到长度超过了15个字符。打印语句后,您的控制台将转换特殊字符并将 Header1
更改为黄色文本。要解决此问题,您可以在 {'Header1':<15}
格式之外添加黄色填充。
类似这样的方法可行:
print(yellow(f'{'Header1':<15}') + f' {'Header2':<15} Header2")
我正在尝试将彩色 headers 打印到控制台,但它似乎弄乱了间距。为什么它会忽略间距?
yellow = lambda text: '3[0;33m' + text + '3[0m'
print(f"{yellow('Header1'):<15} {'Header2':<15} Header2")
输出:
Header1 Header2 Header2
因为它使用lambda函数返回的文本来计算字符串长度:
在:
len(yellow('Header1'))
输出:
18
显然,在将字符解释为颜色信息之前评估添加空格的长度。我认为这是有道理的,因为颜色可能仅在以后由 sys.stdout
.
例如,如果您执行以下操作,您将获得一些空间:
在:
yellow = lambda text: '3[0;33m' + text + '3[0m'^M
print(f"{yellow('Header1'):<20} {'Header2':<15} Header2")
输出:
Header1 Header2 Header2
问题是您为黄色添加的填充。这是格式字符串在第 2 行转换成的内容:
初始版本
print(f"{yellow('Header1'):<15} {'Header2':<15} Header2")
黄色('Header1')被评估后
print(f"{'3[0;33mHeader13[0m':<15} {'Header2':<15} Header2")
可以看到长度超过了15个字符。打印语句后,您的控制台将转换特殊字符并将 Header1
更改为黄色文本。要解决此问题,您可以在 {'Header1':<15}
格式之外添加黄色填充。
类似这样的方法可行:
print(yellow(f'{'Header1':<15}') + f' {'Header2':<15} Header2")