鱼C论坛

 找回密码
 立即注册
查看: 753|回复: 0

[技术交流] ANSI 颜色转义序列列表

[复制链接]
发表于 2021-12-19 16:24:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

圣诞节即将到来,来颗圣诞树吧:
  1. import random
  2. height = 11
  3. for i in range(height):
  4.     print(' ' * (height - i), end = '')
  5.     for j in range((2 * i) + 1):
  6.         if random.random() < 0.1:
  7.             color = random.choice(['\033[1;31m', '\033[33m', '\033[1;34m'])
  8.             print(color, end = '')
  9.         else:
  10.             print('\033[32m', end = '')
  11.         print('*', end = '')
  12.     print()
  13. print((' ' * height) + '|')
复制代码


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

对于代码中的 '\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 对应颜色表:
         Color Code.png

        比如:编码:\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荣誉 +5 鱼币 +5 贡献 +3 收起 理由
hrpzcf + 5 + 5 + 3 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-12 15:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表