使用Python根据文本列表对单词进行着色

3

我有两个文本文件d.txt和phrase.txt,其中d.txt包含段落文本,而phrase.txt包含多个单词短语,例如“最先进的技术”,“反生产力”,“舰队动态”等,这些短语在下面的链接中可以找到:

https://en.wikipedia.org/wiki/List_of_buzzwords

如果在phrase.txt中找到匹配的短语,我需要为其颜色着色,以便在d.txt中进行标识

迄今为止的尝试:

phrases = open("phrase.txt").readlines()
words = open("d.txt").read()

for phrase in phrases:
    all_words_found = False
    phrase_words = phrase.lower().split(" ")
    for word in phrase_words:
        if word in words:
            all_words_found = True
            break

    if all_words_found:
        print (phrase)

期望输出: 在此输入图片描述

请帮忙!

谢谢帮助:


这段文本将如何显示?在HTML文档中吗? - MVB76
我会像MVB76一样问同样的问题 - 你想要什么输出?如果你想在Python中打印输出,可以研究一下ANSI颜色转义码。 - Gigi
我想要HTML输出。抱歉,我应该提到它的。 - Programmer_nltk
如果您想要HTML输出,只需使用代表所需颜色更改的html标签替换每个短语,而不是使用ansi转义码。我将在我的答案中更新一个示例。我个人希望在我的大型项目中创建一个CSS类并应用它,但对于这个示例,我会像这样使用<span style="color:Red;"> PHRASE </span>。 - Gigi
1个回答

1
更新:创建HTML输出。
要将上面的代码更改为创建HTML输出,请在替换期间使用标记而不是ansi。此处的示例将使用简单的span标记。
words = ["catch phrase", "codeword"]
phrase = "He said a catch phrase. And a codeword was written on a wall."

new_phrase = phrase
for word in words:
    new_phrase = new_phrase.replace(i, f'<span style="color:Red;">{word}</span>')
print(new_phrase) #Rather than printing, send this wherever you want it.

内联打印解决方案

然而,回答您的基本问题,即如何用不同颜色的相同单词替换给定段落中的一组单词,请尝试使用.replace()和ansi颜色转义代码。如果您想在Python环境中打印出这些单词,则可以使用此方法。

以下是一个简单的示例,演示了如何将文本行中的某些单词变为红色:

words = ["catch phrase", "codeword"]
phrase = "He said a catch phrase. And a codeword was written on a wall."

new_phrase = phrase
for i in words:
    new_phrase = new_phrase.replace(i, f'\033[91m{i}\033[0;0m')
print(new_phrase)

这是另一篇关于Python输出中ANSI转义码和颜色的Stack Overflow帖子: 如何在Python中打印有颜色的文本? ANSI转义码是一种改变输出颜色的方法-可以通过谷歌搜索来查找更多选项/颜色。 在这个例子中,我使用了以下代码:首先将颜色更改为红色:
\033[91m

在设置颜色后,您还需要将其改回来,否则其余的输出也会是该颜色:
\033[0;0m

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接