如何在不导入其他模块的情况下更改 python 中文本的颜色?

How do you change the colour of text in python without importing other modules?

如何创建打印语句,例如 print("Hello world") 可能是不同颜色(例如绿色)。

另外,有没有不需要下载新模块的方法?

@epicgamer300065,以下所有代码均来自@Brian 和我 (@Scott) 之前提供的链接。我确实需要在导入后立即插入一个 init() 语句以使代码正常工作,并且我确实需要从命令提示符 运行 执行此操作(但不需要管理员权限),但它确实会产生预期的彩色结果。 (仅供参考,我在 win10pro 上使用 Python 3.8.1):

from colorama import init, Fore, Back, Style
from termcolor import colored 

init() 

print(Fore.RED + 'Test')

print(Fore.RED + Back.GREEN + 'some red text') 
print(Back.GREEN + 'and with a green background') 
print(Style.BRIGHT + 'and in bright text') 
print(Style.RESET_ALL) 
print('back to normal now')

print(colored('Hello, World!', 'green', 'on_red')) 


# Python program to print 
# colored text and background 
def prRed(skk): print("3[91m {}3[00m" .format(skk)) 
def prGreen(skk): print("3[92m {}3[00m" .format(skk)) 
def prYellow(skk): print("3[93m {}3[00m" .format(skk)) 
def prLightPurple(skk): print("3[94m {}3[00m" .format(skk)) 
def prPurple(skk): print("3[95m {}3[00m" .format(skk)) 
def prCyan(skk): print("3[96m {}3[00m" .format(skk)) 
def prLightGray(skk): print("3[97m {}3[00m" .format(skk)) 
def prBlack(skk): print("3[98m {}3[00m" .format(skk)) 

prCyan("Hello World, ") 
prYellow("It's") 
prGreen("Geeks") 
prRed("For") 
prGreen("Geeks") 

# Python program to print 
# colored text and background 
class colors: 
    reset='3[0m'
    bold='3[01m'
    disable='3[02m'
    underline='3[04m'
    reverse='3[07m'
    strikethrough='3[09m'
    invisible='3[08m'
    class fg: 
        black='3[30m'
        red='3[31m'
        green='3[32m'
        orange='3[33m'
        blue='3[34m'
        purple='3[35m'
        cyan='3[36m'
        lightgrey='3[37m'
        darkgrey='3[90m'
        lightred='3[91m'
        lightgreen='3[92m'
        yellow='3[93m'
        lightblue='3[94m'
        pink='3[95m'
        lightcyan='3[96m'
    class bg: 
        black='3[40m'
        red='3[41m'
        green='3[42m'
        orange='3[43m'
        blue='3[44m'
        purple='3[45m'
        cyan='3[46m'
        lightgrey='3[47m'

print(colors.bg.green + colors.fg.red, "SKk", colors.bg.blue + colors.fg.red, "Amartya") 
print(colors.bg.lightgrey, "SKk", colors.fg.red, "Amartya") 


# Python program to print 
# colored text and background 
def print_format_table(): 
    """ 
    prints table of formatted text format options 
    """
    for style in range(8): 
        for fg in range(30, 38): 
            s1 = '' 
            for bg in range(40, 48): 
                format = ';'.join([str(style), str(fg), str(bg)]) 
                s1 += '\x1b[%sm %s \x1b[0m' % (format, format) 
            print(s1) 
        print('\n') 

print_format_table() 

@epicgamer300065,这是一个实际的完整 IDLE 解决方案,适用于我在 win10pro 上使用 Python 3.8.1,但它在终端中不起作用。

它来自 idlecolors,由于您的访问受限,我已将 idlecolors.py 所需的完整模块包含在此处,以便您 copy/paste 避免无法安装。

如您所见,唯一的依赖项是模块 sysrandom,但是 random 仅用于 randcol() 函数,您可以在没有 if 的情况下使用你必须这样做。

这是idlecolors.py

import sys
import random

# This will only work in IDLE, it won't work from a command prompt
try:
    shell_connect = sys.stdout.shell
except AttributeError:
    print("idlecolors highlighting only works with IDLE")
    exit()

# Map the colour strings to IDLE highlighting
USE_CUSTOM_COLORS = False       # Change to True if you want to use custom colours

global colormap

if USE_CUSTOM_COLORS:
    colormap = {"red": "COMMENT",
                "orange": "KEYWORD",
                "green": "STRING",
                "blue": "stdout",
                "purple": "BUILTIN",
                "black": "SYNC",
                "brown": "console",

                "user1": "DEFINITION",
                "user2": "sel",
                "user3": "hit",
                "user4": "ERROR",
                "user5": "stderr"}
else:
    colormap = {"red": "COMMENT",
                "orange": "KEYWORD",
                "green": "STRING",
                "blue": "stdout",
                "purple": "BUILTIN",
                "black": "SYNC",
                "brown": "console"}

# ---------------------------
# Functions
# ---------------------------

# Like the print() function but will allow you to print colours
def printc(text, end="\n"):
    # Parse the text provided to find {text:color} and replace with the colour. Any text not encompassed in braces
    # will be printed as black by default.
    buff = ""
    for char in text:
        if char == "{":
            # Write current buffer in black and clear
            shell_connect.write(buff, colormap["black"])
            buff = ""
        elif char == "}":
            # Write current buffer in color specified and clear
            tag_write = buff.split(":")
            shell_connect.write(tag_write[0], tag_write[1])
            buff = ""
        else:
            # Add this char to the buffer
            buff += char

    # Write the chosen end character (defaults to newline like print)
    sys.stdout.write( end )


# Individual colour functions
def red(text):
    return "{"+ text + ":" + colormap["red"] + "}"

def orange(text):
    return "{"+ text  + ":" + colormap["orange"] + "}"

def green(text):
    return "{"+ text + ":" + colormap["green"] + "}"

def blue(text):
    return "{"+ text  + ":" + colormap["blue"] + "}"

def purple(text):
    return "{"+ text + ":" + colormap["purple"] + "}"

def black(text):
    return "{"+ text  + ":" + colormap["black"] + "}"

def brown(text):
    return "{"+ text + ":" + colormap["brown"] + "}"

def randcol(text):
    color = random.choice(list(colormap.keys()))
    return "{"+ text + ":" + colormap[color] + "}"

# User defined colours
def user1(text):
    return "{"+ text + ":" + colormap["user1"] + "}"

def user2(text):
    return "{"+ text + ":" + colormap["user2"] + "}"

def user3(text):
    return "{"+ text + ":" + colormap["user3"] + "}"

def user4(text):
    return "{"+ text + ":" + colormap["user4"] + "}"

def user5(text):
    return "{"+ text + ":" + colormap["user5"] + "}"

下面是您将如何使用它:

from idlecolors import *
printc( red("Red text") )
printc( "If you add " + red("red") + " to " + blue("blue") + ", you get " + purple("purple") )

# Print a line in a random colour
printc( randcol("This is a random colour") )

# Print each word in a random colour
mytext = "This is a random piece of text which I want to print in random colours"
mytext = mytext.split(" ")
for word in mytext:
    printc(randcol(word), end=" ")

可用的颜色有 red()orange()green()blue()purple()black()brown() , 您可以使用 randcol() 从该选择中随机选择颜色。