是否可以为python输出添加颜色?

is it possible to add colors to python output?

本问题已经有最佳答案,请猛点这里访问。

所以我为我、我的朋友和我的家人做了一个小的密码强度测试仪,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import re
strength = ['You didnt type anything','Terrible','weak sause','avarage','Good!','Very Strong', 'THE FORCE IS STRONG WITH THIS ONE']
score = 1
password=(raw_input("please type in the password you would like rated:"))

if len(password) < 1:
      print strength[0]
if len(password) >=1 and len(password)<=4:
      print strength[1]
else:
    print""

if len(password) >=7:
    score+=1
    print"password was made stronger by not being short"
else:
    print"Your password is really short, concider making it longer"

if len (password) >=10:
    score+=1
    print"password was made stronger by long"
else:
    print"An even longer password would make it stronger"

if re.search('[a-z]',password) and re.search('[A-Z]', password):
    score+=1
    print"password was made stronger by having upper & lower case letters"
else:
    print"Indlucing both upper and lower case letters will make your password stronger"

if re.search('[0-9]+', password):
    score+=1
    print"Password was made stronger by using numbers"
else:
    print"Using numbers will make your password stronger"

if re.search('[.,!,@,#,$,%,^,&,*,?,_,~,-,£,(,)]',password):
    score+=1
    print"Password was made stronger by using punctuation marks and characters"
else:
    print"Using punctuation marks and characters will make the password stronger"

print"
 final password rating is:"

print strength[score]

我希望做的是:

第一-在我给用户的关于密码内容的评论中添加颜色,好的评论如:"password was made stronger by using numbers"将有绿色输出,而建设性反馈如"using numbers will make your password stronger"将有红色输出,这样用户就更容易发现自己密码的优缺点。

第二-我想知道,如果效果相同,我可以在上面的"强度"列表中为某些项目上色吗?把前两个变成红色,中间一对变成黄色,最后一对变成绿色?

泰!


idle的控制台不支持ansi转义序列或任何其他形式的转义来着色输出。

您可以学习如何直接与idle的控制台对话,而不是将其视为普通的stdout并打印到它(这是它如何对语法进行颜色编码之类的操作),但这非常复杂。idle文档只告诉您使用idle本身的基本知识,它的idlelib库没有文档(好吧,只有一行文档—"(2.3中新增的)支持idle开发环境的库。"—如果您知道在哪里找到它,但这不是很有帮助。因此,您需要阅读源代码,或者做大量的尝试和错误,甚至开始工作。

或者,您可以从命令行运行脚本,而不是从空闲状态运行脚本,在这种情况下,您可以使用终端处理的任何转义序列。大多数现代终端至少能处理16/8色的基本ANSI。许多将处理16/16,或扩展的xterm-256颜色序列,甚至全24位颜色。(我认为gnome-terminal是Ubuntu的默认配置,在其默认配置中,它将处理xterm-256,但这对于超级用户或askubuntu来说确实是个问题。)

学习阅读termcap条目以了解要输入的代码是复杂的……但是如果您只关心一个控制台,或者愿意假设"几乎所有东西都处理基本的16/8色ANSI,而任何不关心的东西,我都不关心",那么您可以忽略该部分,然后根据该页对其进行硬编码。

一旦你知道你想要发出什么,这只是在打印代码之前把代码放入字符串的问题。

但是有一些图书馆可以让这一切对你来说更容易。一个非常好的库是curses,它与Python一起内置。这可以让你接管终端,做一个全屏的图形用户界面,有颜色和旋转光标,以及任何你想要的东西。当然,对于简单的使用来说,它有点重。像往常一样,通过搜索pypi可以找到其他库。


如果您的控制台(像您的标准Ubuntu控制台)理解ANSI颜色代码,您可以使用它们。

这里有一个例子:

1
print ('This is \x1b[31mred\x1b[0m.')


由于对python非常陌生,我错过了这里给出的一些非常简单和有用的命令:使用python在终端上打印颜色?-

最终决定用克林特作为一个伟大而聪明的人给出的答案。