繁体   English   中英

使用Python为文本中的给定单词着色

[英]Coloring given words in a text with Python

我已经阅读了有关如何使用Python和Colorama软件包为文本着色的问题,但没有找到所需的内容。

我有一些原始文本:

不可能考虑邀请他的男人看到乐器庆祝不愉快。 休息一下,必须在接下来的许多日子里摆好姿势。 他精美继续解释米德尔顿。 年轻的伍迪的语音时光让她觉得平等。

还有两个单词列表:

good = ["instrument", "kind", "exquisite", "young"]
bad  = ["impossible", "unpleasant", "woody"]

我想在终端中打印该文本,以使good单词显示为绿色,而bad单词显示为红色。

我知道我可以使用colorama,依次检查每个单词并为该单词做出打印声明,但这听起来不是一个好的解决方案。 有有效的方法吗?

这应该工作:

from colorama import Fore, Style

for word in text.split(' '):
    if word in good:
        print Fore.red + word
    elif word in bad:
        print Fore.green + word
    else:
        print Style.RESET_ALL + word

您可以始终这样做(尽管可能有点慢):

from colorama import Fore

for word in good:
    text = text.replace(word, Fore.GREEN+word)

for word in bad:
    text = text.replace(word, Fore.RED+word)

print(text)

re.sub在这里也可能很有趣,尤其是因为您可能不想替换其他单词内的单词,因此可以使用r'\\bword\\b'

这是使用地图的解决方案。 它绝对不会比常规循环快:/

from colorama import Fore, Style

def colourise(s, good, bad):
    if s in good:
        return Fore.RED + s
    elif s in bad:
        return Fore.GREEN + s
    else:
        return Style.RESET_ALL + s

text = "Impossible considered invitation him men instrument saw celebrated unpleasant. Put rest and must set kind next many near nay. He exquisite continued explained middleton am. Voice hours young woody has she think equal."

good = ["instrument", "kind", "exquisite", "young"]
bad  = ["impossible", "unpleasant", "woody"]
print(' '.join(map(lambda s: colourise(s, good, bad),text.split())))

或者:

print(' '.join(colourise(s, good, bad) for s in text.split()))

第二个版本可能更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM