'Colour codes in python are not formatting correctly
In Python 3.8.3 whenever I try to implement colored text in python like \033[1;93m it keeps on saying [32m. Can I have some help, because it doesn't usually happen?
Solution 1:[1]
Apparently, you can only do it in the console. Too bad.
Solution 2:[2]
Here is the module idle colours:
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"] + "}"
And here is how you might use it:
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=" ")
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Bxzr |
Solution 2 | Samuel May |