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

时间:2013-12-31 22:26:02

标签: python colors

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

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 "\n final password rating is:"
print strength[score]

我希望做的是:

1st - 为我给用户的关于密码内容的评论添加颜色,好的评论如:"password was made stronger by using numbers"将有绿色输出,而建设性反馈如{{1}将有一个红色输出,使用户更容易发现他的密码的利弊

第二 - 我想知道,如果它的工作方式相同,我可以在上面的“强度”列表中为某些项目着色吗?前两个是红色,中间对是黄色,最后一对是绿色吗?

TY!

3 个答案:

答案 0 :(得分:3)

IDLE的控制台不支持ANSI转义序列,也不支持任何其他形式的转义,以便为输出着色。

你可以学习如何直接与IDLE的控制台对话,而不是像普通的stdout一样对它进行处理和打印(这就像对语法进行颜色编码一样),但这很复杂。 idle文档只是告诉您使用IDLE本身的基础知识,而它的idlelib库没有文档(好吧, 一行文档 - “(New in 2.3)IDLE开发环境的支持库。“ - 如果你知道在哪里找到它,但这不是很有用)。因此,您需要read the source,或者进行大量的试验和错误,甚至开始使用。


或者,您可以从命令行而不是IDLE运行脚本,在这种情况下,您可以使用终端处理的任何转义序列。大多数现代终端将至少处理基本的16/8色ANSI。许多将处理16/16,或扩展的xterm-256颜色序列,甚至完整的24位颜色。 (我相信gnome-terminal是Ubuntu的默认设置,在默认配置中它会处理xterm-256,但这对SuperUser或AskUbuntu来说确实是一个问题。)

学习阅读termcap条目以了解要输入哪些代码很复杂......但如果你只关心一个控制台 - 或者愿意只是假设“几乎一切都处理基本16/8色ANSI,以及任何不支持的,我不关心“,您可以忽略该部分,只需基于例如this page对其进行硬编码。

一旦你知道你要发射什么,只需要在打印之前将代码放入字符串中。

但是有些库可以让你更轻松。一个非常好的库,它是用Python内置的,curses。这使您可以接管终端并执行全屏GUI,使用颜色和旋转光标以及您想要的任何其他内容。当然,它对于简单的用途来说有点重量。像往常一样,通过搜索PyPI可以找到其他库。

答案 1 :(得分:2)

如果您的控制台(如标准的ubuntu控制台)理解ANSI color codes,您可以使用它们。

这是一个例子:

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

答案 2 :(得分:-1)

由于对python非常陌生而感到不知所措,我错过了一些非常简单实用的命令:Print in terminal with colors using Python? -

最终决定使用CLINT作为一个伟大而聪明的人所给出的答案