如何在不导入其他模块的情况下更改 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 避免无法安装。
如您所见,唯一的依赖项是模块 sys
和 random
,但是 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()
从该选择中随机选择颜色。
如何创建打印语句,例如 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 避免无法安装。
如您所见,唯一的依赖项是模块 sys
和 random
,但是 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()
从该选择中随机选择颜色。