傻眼貓咪 发表于 2021-12-19 16:24:34

ANSI 颜色转义序列列表

本帖最后由 傻眼貓咪 于 2021-12-19 16:27 编辑

圣诞节即将到来,来颗圣诞树吧:
import random
height = 11
for i in range(height):
    print(' ' * (height - i), end = '')
    for j in range((2 * i) + 1):
      if random.random() < 0.1:
            color = random.choice(['\033)
            print(color, end = '')
      else:
            print('\033[32m', end = '')
      print('*', end = '')
    print()
print((' ' * height) + '|')

说真的,其实这个根本没有什么用处的知识{:10_291:} ,但是这里既然是技术交流区,稍微分享一下知识吧。

对于代码中的 '\033[1;31m' 或 '\033[1;34m' ,这里我就一一说明吧。
其实这串字符是终端字体设定输出,并非 Python 专有功能,一些其它平台如 C/C++ 或 Bash 也能使用(注:不是全部都能用,必须能够解译 ANSI 编码,才能正常运用,这里我就不说明了)

对于以上我的代码,我使用 ANSI 颜色转义法输出字符

其构造为:
\033[XXXm 你的字符串 \033[XXXm

\033 为八进制的 27,ASCII 编码 27 是 ESC 控制符 ,\033[ 作为 ANSI 颜色转义序列符。
XXX 为一系列用分号分隔的参数,比如:31;1;4 或 38;5;206;48;5;57 等等。
m 为参数输入结束符。
**分前端和后端 \033[XXXm,前端为改变字符串颜色/样式编码,后端为恢复初始颜色/样式编码(如:\033[0m,0 为初始化)

作为参数可以分成几种形态:
1.)颜色效果(1 - 2 为颜色效果)
      \033[0m 初始化
      \033[1m 亮 \033[0m
      \033[2m 暗 \033[0m      

2.)字体效果(3 - 9 为字体效果)
      \033[3m 斜体 \033[0m
      \033[4m 下划线 \033[0m
      \033[5m 闪烁(慢) \033[0m
      \033[6m 闪烁(快)\033[0m
      \033[7m 反显 \033[0m
      \033[8m 消隐 \033[0m
      \033[9m 淡出 \033[0m

3.)颜色(前景/字体色 和 背景色)
      
      2 位颜色
      系统本来就是 2 位颜色(通常为黑底白字)

      3/4 位颜色(只有 1 个参数值)
      编码:30 - 37 为前景色
      \033[30m 黑色 \033[0m
      \033[31m 红色 \033[0m
      \033[32m 绿色 \033[0m
      \033[33m 黄色 \033[0m
      \033[34m 蓝色 \033[0m
      \033[35m 紫色 \033[0m
      \033[36m 青色 \033[0m
      \033[37m 白色 \033[0m

      编码:40- 47 为背景色
      \033[40m 黑色 \033[0m
      \033[41m 红色 \033[0m
      \033[42m 绿色 \033[0m
      \033[43m 黄色 \033[0m
      \033[44m 蓝色 \033[0m
      \033[45m 紫色 \033[0m
      \033[46m 青色 \033[0m
      \033[47m 白色 \033[0m

      ** 对于以上的前景色和背景色,可以合在一起,如:背景色为黄色、前景色为红色 = \033[31;43m 红色 \033[0m

      8 位颜色(256 个颜色)
      前景颜色编码:\033[38;5;XXXm(XXX 为 0 至 255)
      背景颜色编码:\033[48;5;XXXm(XXX 为 0 至 255)

      下图为 0 至 255 对应颜色表:
      

      比如:编码:\033[38;5;144m 字符串 \033[0m

      24 位颜色,编码:
      前景颜色编码:\033[38;2;rrr;ggg;bbbm(rrr/ggg/bbb 为 0 至 255,对应三色 RGB 编码)
      背景颜色编码:\033[48;2;rrr;ggg;bbbm(rrr/ggg/bbb 为 0 至 255,对应三色 RGB 编码)
页: [1]
查看完整版本: ANSI 颜色转义序列列表