偶然在网上看到一段代码,可以使Python输出带颜色的文字,后来发现这不是Python特有的,而是终端的特性,其他编程语言也可以使用相同的方法输出彩色文字。
print('\x1b[31mapple')
print('\x1b[34morange')
print('\x1b[32mpear')
后来发现颜色跟代码里面数字有关系,31代表红色,32代表绿色,35代表蓝色,文字颜色范围从30到37,下面是全部数字代表的颜色。
30: 黑
31: 红
32: 绿
33: 黄
34: 蓝
35: 紫
36: 深绿
37: 白色
再后来发现,其实完整代码应该是这样的:
print('\033[1;32;40m这里是需要显示的文字\033[0m')
颜色的控制通过ESC字符(\033)加”[“加颜色代码加”m”实现。ESC的ASCII码是十进制的27,八进制的033(\033),十六进制的1b(\x1b)。所以下面的代码也是可以的:
print('\033[1;32;40m这里是需要显示的文字\033[0m')
print('\x1b[1;32;40m这里是需要显示的文字\x1b[0m')
# 混用也是可以的,Python中只有\0\x两种转义数字,所以不能用十进制的27
print('\x1b[1;32;40m这里是需要显示的文字\033[0m')
# 里面的文字样式,可以只设置一种
print('\033[4m这里是需要显示的文字\033[0m') #文字显示下划线
print('\033[31m这里是需要显示的文字\033[0m') #显示红色文字
print('\033[42m这里是需要显示的文字\033[0m') #显示绿色背景
代码具体含义按顺序如下:
- “\033”声明了转义序列的开始,
- “[”开始定义颜色。
- “1”定义了高亮显示字符,具体如下
- “32”,表示前景颜色为绿色
- “40”,表示黑色背景
- “m”,这个m不能忘了
- 这里是你要显示的带颜色的文字
- “\033[0m”关闭转义序列
第三条的数字代表的意思:
0 终端默认设置(黑底白字)
1 高亮显示
4 使用下划线
5 闪烁
7 反白显示
8 不可见
完整颜色信息及含义如下:
颜色列表如下:
none = "\033[0m"
black = "\033[0;30m"
dark_gray = "\033[1;30m"
blue = "\033[0;34m"
light_blue = "\033[1;34m"
green = "\033[0;32m"
light_green -= "\033[1;32m"
cyan = "\033[0;36m"
light_cyan = "\033[1;36m"
red = "\033[0;31m"
light_red = "\033[1;31m"
purple = "\033[0;35m"
light_purple = "\033[1;35m"
brown = "\033[0;33m"
yellow = "\033[1;33m"
light_gray = "\033[0;37m"
white = "\033[1;37m"
背景颜色范围:40-47 文字颜色: 30-37
40:黑 30: 黑
41:红 31: 红
42:绿 32: 绿
43:黄 33: 黄
44:蓝 34: 蓝
45:紫 35: 紫
46:深绿 36: 深绿
47:白色 37: 白色
输出特效格式控制:
\033[0m 关闭所有属性
\033[1m 设置高亮度
\033[4m 下划线
\033[5m 闪烁
\033[7m 反显
\033[8m 消隐
\033[30m -- \033[37m 设置前景色
\033[40m -- \033[47m 设置背景色
光标位置等的格式控制:
\033[nA 光标上移n行
\033[nB 光标下移n行
\033[nC 光标右移n行
\033[nD 光标左移n行
\033[y;xH 设置光标位置
\033[2J 清屏
\033[K 清除从光标到行尾的内容
\033[s 保存光标位置
\033[u 恢复光标位置
\033[?25l 隐藏光标
\033[?25h 显示光标