您好我正在尝试使用ASCII Escape序列很好地格式化带有颜色的表格,但是当我应用颜色时,格式化方法不会格式化字符串,导致表格不对齐。格式方法在应用颜色ASCII转义序列后是否格式化字符串是否有原因?另外,是否有更好的方法来应用文本着色(注意,我无法在此系统上安装Coloroma或任何其他模块)?
以下是可用于演示此问题的可测试代码。
代码:
class bcolors:
HEADER = '\033[95m'
OKBLUE = '\033[94m'
OKGREEN = '\033[92m'
WARNING = '\033[93m'
FAIL = '\033[91m'
ENDC = '\033[0m'
def disable(self):
self.HEADER = ''
self.OKBLUE = ''
self.OKGREEN = ''
self.WARNING = ''
self.FAIL = ''
self.ENDC = ''
def pass_fail(color, string):
if color == 'red':
return bcolors.FAIL + string + bcolors.ENDC
elif color == 'green':
return bcolors.OKGREEN + string + bcolors.ENDC
elif color == 'yellow':
return bcolors.WARNING + string + bcolors.ENDC
print('\n')
line_sep = '\t+' + ('-' * 57) + '+'
format_table = line_sep + '\n' + '\t| {:<42} | {:^10} |'
Critical = 100
Major = 200
Minor = 10
print('')
print(format_table.format('Number of Critical Issues Are: ', str(Critical)))
print(format_table.format('Number of Major Issues Are: ', str(Major)))
print(format_table.format('Number of Minor Issues Are: ', (Minor)))
print(line_sep)
print('')
print(format_table.format('Number of Critical Issues Are: ', pass_fail('green', str(Critical))))
print(format_table.format('Number of Major Issues Are: ', pass_fail('red', str(Major))))
print(format_table.format('Number of Minor Issues Are: ', pass_fail('yellow', str(Minor))))
print(line_sep)
没有正确格式化的第一个输出:
+---------------------------------------------------------+
| Number of Critical Issues Are: | 100 |
+---------------------------------------------------------+
| Number of Major Issues Are: | 200 |
+---------------------------------------------------------+
| Number of Minor Issues Are: | 10 |
+---------------------------------------------------------+
未应用具有颜色格式的第二个输出:
+---------------------------------------------------------+
| Number of Critical Issues Are: | 100 |
+---------------------------------------------------------+
| Number of Major Issues Are: | 200 |
+---------------------------------------------------------+
| Number of Minor Issues Are: | 10 |
+---------------------------------------------------------+
答案 0 :(得分:1)
字符串format
方法确实格式化了字符串,但在确定填充时,它在字符串长度计数中包含了所有 ANSI Color Escape 字符。
要查看此内容:len(pass_fail('yellow', str(Minor)))