Python的ANSI颜色
项目描述
Python的ANSI颜色
为您的字符串添加ANSI颜色和装饰。
使用示例
from __future__ import print_function # accomodate Python 2 from colors import * print(color('my string', fg='blue')) print(color('some text', fg='red', bg='yellow', style='underline'))
color 返回的字符串将包含嵌入的 ANSI代码序列,指定文本颜色和样式。例如,上述代码将打印以下字符串
'\x1b[34mmy string\x1b[0m' '\x1b[31;43;4msome text\x1b[0m'
您可以使用 fg 参数选择前景(文本)颜色,使用 bg 选择背景颜色,使用 style 选择样式。
您可以选择8种基本的ANSI颜色之一:黑色、红色、绿色、黄色、蓝色、品红色、青色和白色,以及一个特殊的默认设置,这通常是特定于显示的,但通常是合理的“无特殊颜色”设置。
还有其他指定颜色的方法。许多设备支持一种256色的特殊方案,这是作为原始ANSI代码对xterm终端模拟器的扩展而开发的。可以从更大的调色板中指定颜色(或灰色),通过int值(0-255)来指定。
查看所有颜色
from __future__ import print_function from colors import color for i in range(256): print(color('Color #%d' % i, fg=i))
包含的show_colors.py程序是这一想法的扩展版本,可用于探索您的终端或输出设备上的可用颜色和样式组合。
24位颜色和CSS兼容性
现代终端比xterm 256更进一步,通常支持完整的24位RGB颜色方案。您可以通过以下几种方式提供完整的RGB值:
一个包含三个tuple或list的int,每个值从0到255(例如(255, 218, 185)),
包含CSS兼容颜色名称的字符串(例如'peachpuff'),
包含CSS风格的十六进制值的字符串(例如'#aaa'或'#8a2be2'),
包含CSS风格的RGB表示法的字符串(例如'rgb(102,51,153)')。
可以随意混合和匹配这些形式。
print(color('orange on gray', 'orange', 'gray')) print(color('nice color', 'white', '#8a2be2'))
请注意,在基本ANSI颜色集中定义的任何颜色名称都优先于CSS颜色名称。结合终端并不总是同意哪种精确的蓝色应该被认为是ANSI 蓝色的事实,名称颜色可能会有一些歧义。如果您需要完全的精度,请准确指定RGB颜色。可以使用parse_rgb函数来根据CSS标准确定正确的定义。
注意事项
不幸的是,不能保证每个终端都支持ANSI表面上定义的所有颜色和样式。事实上,大多数实现了一个相当小的子集。颜色比样式更好支持,您可能会得到一些最受欢迎的样式,例如加粗或下划线。可能会。
无论支持哪些颜色和样式,都没有保证它们会被准确渲染。即使到今天,自从代码开始标准化以来已经超过50年,终端和输出设备的支持仍然是有限的、碎片化的和零散的。
ANSI代码的演变与今天的历史背景完全不同。互联网和广泛标准化的想法在未来几十年内都还未出现。显示技术分辨率低,颜色在罕见的情况下才会出现,颜色/样式保真度不是主要考虑因素。厂商很少或根本不考虑创建自己的专有代码,以与其他厂商不同的方式实现功能,或者将以前用于其他目的的代码改头换面。实际的ANSI参考材料包括许多短语,例如“几乎从不支持”和“非标准”。
我们今天仍然使用ANSI代码,不是因为它们特别出色,而是因为它们是预网络显示上即使不完全一致也能达成一致的最佳、最标准的方法。即使进入网络时代深处,文本输出仍然是人机交互的重要手段。好消息是:ANSI的颜色和样式规范(在ANSI术语中称为“SGR”或“选择图形渲染”)是整个ANSI中最常用、最遵守的部分。
更多示例
# use some partial functions from __future__ import print_function # so works on Python 2 and 3 alike from colors import red, green, blue print(red('This is red')) print(green('This is green')) print(blue('This is blue'))
您可以选择添加背景颜色和/或样式。
print(red('red on blue', bg='blue')) print(green('green on black', bg='black', style='underline'))
您可以使用多个样式同时使用。用+分隔它们。
print(red('very important', style='bold+underline'))
您还可以指定以下支持的样式之一:无、粗体、虚线、斜体、下划线、闪烁、闪烁2、负色、隐藏、删除线。虽然大多数设备只支持少数几种样式,但未支持的样式通常会被忽略,所以造成的唯一伤害就是您的文本可能没有您希望的那样美观和/或格式化。一个好的通用规则是,如果得到了格式化,就享受它,但不要过分依赖它——特别是不要依赖像闪烁(例如突出显示关键数据)或隐藏(例如隐藏数据)这样的样式。很可能会失望。
如果您经常使用某种样式,您可能想创建自己的命名样式
from functools import partial from colors import color important = partial(color, fg='red', style='bold+underline')) print(important('this is very important!'))
实用函数
在处理ANSI样式的文本时,可能需要确定“等效”文本(去除样式)。函数strip_color(s)就做了这件事,从s中移除ANSI代码,返回其“纯文本等效”。
您还可能希望确定字符串的有效长度。如果它包含ANSI代码,内置的len()函数将返回包括这些代码的长度,尽管它们在逻辑上是0长度的。因此,普通的len(s)可能不是您需要的。相比之下,ansilen(s)返回字符串的“有效”长度,仅包括非ANSI字符。ansilen(s)等价于len(strip_color(s))。
许可证
colors遵循ISC许可证。
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
ansicolors-1.1.8.zip的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 99f94f5e3348a0bcd43c82e5fc4414013ccc19d70bd939ad71e0133ce9c372e0 |
|
MD5 | 9ca7e2396ffa2e20af023c6b83ab7b14 |
|
BLAKE2b-256 | 76317faed52088732704523c259e24c26ce6f2f33fbeff2ff59274560c27628e |
ansicolors-1.1.8-py2.py3-none-any.whl的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 00d2dde5a675579325902536738dd27e4fac1fd68f773fe36c21044eb559e187 |
|
MD5 | f357aa02db2466bc24ff1815cff1aeb3 |
|
BLAKE2b-256 | 5318a56e2fe47b259bb52201093a3a9d4a32014f9d85071ad07e9d60600890ca |