如何更有效地为文本着色?
How to color text more efficiently?
所以我知道如何为文本着色,我使用 class 来定义颜色,然后在打印语句中使用它 -
class color:
purple = '3[95m'
cyan = '3[96m'
darkcyan = '3[36m'
blue = '3[94m'
green = '3[92m'
yellow = '3[93m'
end = '3[0m'
print(color.green + This makes the text green! + color.end)
但是我正在为 CSE class 做一个项目,会有很多文本要阅读,最终所有的白色都会混合在一起,所以使用彩色文本会让事情变得更容易,所以我想知道是否有是一种更简单、更省时的做事方式?
您可以实现自己的函数来接受文本和颜色、插入必要的代码并打印。如果你想像你一样使用 class,我建议使用 subclassing Enum, and naming the colors themselves in all caps, which is the Python convention for constants. (Also if you haven't seen f-strings before, I'd recommend giving them a look。)
from enum import Enum
class Color(Enum):
PUPLE = 95
CYAN = 96
DARK_CYAN = 36
BLUE = 94
GREEN = 92
YELLOW = 93
# (Add any further colors you want to use...)
def color_print(text, color):
"""Print text in the specified color."""
if color not in Color:
raise KeyError(f'Invalid text color: {color}')
print(f'3[{color.value}m{text}3[0m')
你可以这样使用:
color_print('This text should be blue.', Color.BLUE)
你也可以用字典完成同样的事情。我不确定一种方法是否比另一种更好或更干净,因此您可以选择对您来说读起来更好并且使用起来更方便的方法。
COLORS = {
'purple': 95,
'cyan': 96,
'dark_cyan': 36,
'blue': 94,
'green': 92,
'yellow': 93,
# (Add any further colors you want to use...)
}
def color_print(text, color):
"""Print text in the specified color."""
try:
code = COLORS[color]
except KeyError:
raise KeyError(f'Invalid text color: {color}')
print(f'3[{code}m{text}3[0m')
对于这种方法,您需要将颜色指定为字符串而不是枚举的成员:
color_print('This text should be blue.', 'blue')
还有一个名为 ansi-colors 的包,看起来它有很多有用的选项(例如设置前景和背景颜色,以及检查颜色编码字符串的“实际”长度而不计算转义码)。它自 2017 年以来就没有更新过,但可能值得一试。
所以我知道如何为文本着色,我使用 class 来定义颜色,然后在打印语句中使用它 -
class color:
purple = '3[95m'
cyan = '3[96m'
darkcyan = '3[36m'
blue = '3[94m'
green = '3[92m'
yellow = '3[93m'
end = '3[0m'
print(color.green + This makes the text green! + color.end)
但是我正在为 CSE class 做一个项目,会有很多文本要阅读,最终所有的白色都会混合在一起,所以使用彩色文本会让事情变得更容易,所以我想知道是否有是一种更简单、更省时的做事方式?
您可以实现自己的函数来接受文本和颜色、插入必要的代码并打印。如果你想像你一样使用 class,我建议使用 subclassing Enum, and naming the colors themselves in all caps, which is the Python convention for constants. (Also if you haven't seen f-strings before, I'd recommend giving them a look。)
from enum import Enum
class Color(Enum):
PUPLE = 95
CYAN = 96
DARK_CYAN = 36
BLUE = 94
GREEN = 92
YELLOW = 93
# (Add any further colors you want to use...)
def color_print(text, color):
"""Print text in the specified color."""
if color not in Color:
raise KeyError(f'Invalid text color: {color}')
print(f'3[{color.value}m{text}3[0m')
你可以这样使用:
color_print('This text should be blue.', Color.BLUE)
你也可以用字典完成同样的事情。我不确定一种方法是否比另一种更好或更干净,因此您可以选择对您来说读起来更好并且使用起来更方便的方法。
COLORS = {
'purple': 95,
'cyan': 96,
'dark_cyan': 36,
'blue': 94,
'green': 92,
'yellow': 93,
# (Add any further colors you want to use...)
}
def color_print(text, color):
"""Print text in the specified color."""
try:
code = COLORS[color]
except KeyError:
raise KeyError(f'Invalid text color: {color}')
print(f'3[{code}m{text}3[0m')
对于这种方法,您需要将颜色指定为字符串而不是枚举的成员:
color_print('This text should be blue.', 'blue')
还有一个名为 ansi-colors 的包,看起来它有很多有用的选项(例如设置前景和背景颜色,以及检查颜色编码字符串的“实际”长度而不计算转义码)。它自 2017 年以来就没有更新过,但可能值得一试。