首页 > 编程语言 >彩色文本,Python print() 居然还能这样玩?

彩色文本,Python print() 居然还能这样玩?

时间:2024-07-20 10:28:38浏览次数:9  
标签:bg Python color code print 033 文本

大家好,在学习Python编程的过程中,我们习惯于使用 print() 函数来输出文本。然而,许多人不知道的是,print() 函数不仅能输出普通的黑白文本,还能输出彩色文本。

image-20240605162416364

原理

终端与ANSI转义序列

在深入代码之前,我们需要了解一些基础知识。终端(Terminal)是我们与操作系统交互的重要工具,而ANSI转义序列(ANSI escape sequences)则是控制终端行为的指令集合。通过这些转义序列,我们可以改变文本颜色、背景色等。

什么是ANSI转义序列?

ANSI转义序列是一串以 \033[ 开头的字符,用于控制终端的显示属性。常见的颜色码如下:

  • 字体颜色(Foreground color)
    • 黑色: 30
    • 红色: 31
    • 绿色: 32
    • 黄色: 33
    • 蓝色: 34
    • 洋红: 35
    • 青色: 36
    • 白色: 37
  • 背景颜色(Background color)
    • 黑色: 40
    • 红色: 41
    • 绿色: 42
    • 黄色: 43
    • 蓝色: 44
    • 洋红: 45
    • 青色: 46
    • 白色: 47

案例代码

基本用法

下面是一个简单的示例,展示如何使用ANSI转义序列打印彩色文本:

# 打印红色文本
print("\033[31m这是红色文本\033[0m")

# 打印绿色文本
print("\033[32m这是绿色文本\033[0m")

image-20240605161801134

在上述代码中,\033[31m 设置文本颜色为红色,\033[32m 设置文本颜色为绿色,\033[0m 则用于重置所有属性,以确保后续文本不受影响。

彩色文本函数

为了便于使用,我们可以封装一个函数,来简化彩色文本的打印:

def print_color(text, color):
    color_codes = {
        "black": "30",
        "red": "31",
        "green": "32",
        "yellow": "33",
        "blue": "34",
        "magenta": "35",
        "cyan": "36",
        "white": "37"
    }
    color_code = color_codes.get(color.lower(), "37")
    print(f"\033[{color_code}m{text}\033[0m")

# 使用封装的函数打印彩色文本
print_color("这是红色文本", "red")
print_color("这是绿色文本", "green")
print_color("这是蓝色文本", "blue")

image-20240605161829774

高级用法

我们还可以通过组合多种属性来实现更复杂的效果。例如,打印带有不同背景色的文本:

def print_color_bg(text, fg_color, bg_color):
    fg_color_codes = {
        "black": "30",
        "red": "31",
        "green": "32",
        "yellow": "33",
        "blue": "34",
        "magenta": "35",
        "cyan": "36",
        "white": "37"
    }
    bg_color_codes = {
        "black": "40",
        "red": "41",
        "green": "42",
        "yellow": "43",
        "blue": "44",
        "magenta": "45",
        "cyan": "46",
        "white": "47"
    }
    fg_code = fg_color_codes.get(fg_color.lower(), "37")
    bg_code = bg_color_codes.get(bg_color.lower(), "40")
    print(f"\033[{fg_code};{bg_code}m{text}\033[0m")

# 使用封装的函数打印带背景色的彩色文本
print_color_bg("红色文字,黄色背景", "red", "yellow")
print_color_bg("绿色文字,蓝色背景", "green", "blue")

image-20240605161922613

完整案例:彩色日志系统

我们可以利用上述知识,创建一个简单的彩色日志系统,用不同的颜色表示不同级别的日志信息:

class ColorLogger:
    def __init__(self):
        self.level_colors = {
            "info": "32",    # 绿色
            "warning": "33", # 黄色
            "error": "31"    # 红色
        }
    
    def log(self, message, level="info"):
        color_code = self.level_colors.get(level.lower(), "37")
        print(f"\033[{color_code}m[{level.upper()}] {message}\033[0m")

# 使用彩色日志系统
logger = ColorLogger()
logger.log("这是信息日志", "info")
logger.log("这是警告日志", "warning")
logger.log("这是错误日志", "error")

image-20240605161947596

彩色文本的输出不仅让代码更加生动,还能在实际开发中,如日志系统等,发挥重要作用。

标签:bg,Python,color,code,print,033,文本
From: https://blog.csdn.net/pythondh1/article/details/140512552

相关文章

  • 简单python游戏开发,使用Pyglet创建你的第一个游戏
    更多高质量Python、副业教程记得关注公众号【软件测试圈】你是否想过用Python编写一个小游戏或者一个图形化应用?Pyglet可能就是你所需要的工具。Pyglet是一个强大的Python库,它允许你创建跨平台的多媒体应用程序。什么是Pyglet?Pyglet是一个Python库,用于编写跨平台的多......
  • 十天学会Python——第9天:多任务编程与网络编程
    1进程与线程1.1多进程基础并发:一段时间内交替执行多个任务(任务数量大于CPU核心数)**并行**:一段时间内同时一起执行多个任务(任务数量小于或等于CPU核心数)进程:资源分配的最小单位,操作系统进行资源分配和调度运行的基本单位,一个正在运行的程序就是一个进程进程的创建步骤......
  • 尖刺花朵 彩 Python
    importturtleasts=133t.speed(0)qa=0h=['red','yellow','green','black','pink','orange','brown']foriinrange(99999999999999999999999):  t.fillcolor(h[s%7])  ifi%3==2:   ......
  • python-最小公倍数(PythonTip)
    [题目描述]编写一个程序,找出能被从1到给定数字n(包括n)的所有数字整除的最小正数(即最小公倍数)。定义函数smallest_multiple()的函数,参数为n。在函数内,返回能被从1到给定数字n(包括n)的所有数字整除而无余数的最小正数。示例输入:5示例输出:60比如,对于输入5,最小公倍数是60,因为......
  • Python和pycharm的环境安装
    1.Python的安装方法一、Python的官网下载地址:https://www.python.org/downloads/   下载安装方法二、anaconda安装(开源的Python发行版本)下载版本列表:https://repo.anaconda.com/archive/重要说明:如果你下载最近版本安装的过程中出现:failedtoextractpackages弹窗提......
  • 在终端怎么升级python
    对于Windows系统:打开命令行终端:使用快捷键"Win+R"打开运行窗口,输入"cmd"并按下"Enter"键。安装或更新pip(如果尚未安装):输入命令python-mensurepip--upgrade来安装或更新pip。升级Python:注意:直接通过pip升级Python可能并不总是可行的,因为pip主要用于管理Python包,而不是Pyt......
  • python内置zip函数详解
          在Python中,zip是一个内置函数(其实是一个class),可以将多个可迭代对象(如列表、元组等)作为参数,将对象中对应index的元素打包成一个个的元组,然后返回由这些元组tuple组成的zip迭代器(之前文章讲过,类中包含了__iter__和__next__魔法方法可作为迭代器)。以下是pytho......
  • 将Json格式的文件转为Excel格式文件的python代码
    importpandasaspdimportosfromopenpyxlimportWorkbook'''pandas是Python中用于数据分析的一个非常强大的库,它提供了快速、灵活和表达式丰富的数据结构,旨在使“关系”或“标签”数据的处理工作变得既简单又直观。pandas非常适合于处理表格数据,如CSV文件、SQL查询结......
  • Python正则表达式
    文章目录了解元字符常用的元字符正则表达式进阶re模块match方法切分字符串分组贪婪匹配预编译字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在。比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单......
  • Python进阶(4)--正则表达式
    正则表达式在Python中,正则表达式(RegularExpression,简称Regex)是一种强大的文本处理工具,它允许你使用一种特殊的语法来匹配、查找、替换字符串中的文本。在这之前,还记得之前我们是通过什么方法分割字符串的嘛?strs="a,b;c@d"print(strs.split(",")) #以“,”为分割点分割......