如何“突出显示”文本文件中找到的单词?

时间:2016-03-01 19:00:07

标签: python

我正在搜索文本文件中的单词。它找到单词并返回包含单词的行。这很好,但我想在该行中突出显示或使单词变为粗体。

我可以在Python中执行此操作吗?此外,我可以使用更好的方法来获取用户txt文件路径。

def read_file(file):
    #reads in the file and print the lines that have searched word. 
    file_name = raw_input("Enter the .txt file path: ")
    with open(file_name) as f:
        the_word = raw_input("Enter the word you are searching for: ")
        print ""
        for line in f:
            if the_word in line:
                print line 

3 个答案:

答案 0 :(得分:8)

特殊字符的一种格式是\033[(NUMBER)(NUMBER);(NUMBER)(NUMBER);...m

第一个数字可以是0,1,2,3或4.对于颜色,我们只使用3和4. 3表示前景色,4表示背景色。第二个数字是颜色:

0 black
1 red
2 green
3 yellow
4 blue
5 magenta
6 cyan
7 white
9 default

因此,打印" Hello World!"有了蓝色背景和黄色前景,我们可以做到以下几点:

print("\033[44;33mHello World!\033[m")

无论何时开始颜色,都需要重置为默认值。这就是\033[m的作用。

注意:这仅适用于控制台。您不能在纯文本文本中为文本着色。这就是为什么它被称为 plain 文本。

答案 1 :(得分:1)

我认为突出显示的是用不同颜色打印文本。您无法使用不同的颜色保存文本(除非您使用的是html或类似的东西)

@zondo提供的答案你应该得到一些这样的代码(python3)

import os

file_path = input("Enter the file path: ")

while not os.path.exists(file_path):
    file_path = input("The path does not exists, enter again the file path: ")


with open(file_path, mode='rt', encoding='utf-8') as f:
    text = f.read()


search_word = input("Enter the word you want to search:")

if search_word in text:
    print()
    print(text.replace(search_word, '\033[44;33m{}\033[m'.format(search_word)))
else:
    print("The word is not in the text")

使用html的一个例子是:

if search_word in text:
    with open(file_path+'.html', mode='wt', encoding='utf-8') as f:
        f.write(text.replace(search_word, '<span style="color: red">{}</span>'.format(search_word)))
else:
    print("The word is not in the text")

然后将创建以.html结尾的文件,您可以使用导航器打开它。你的话将以红色突出显示! (这是一个非常基本的代码)

快乐的黑客

答案 2 :(得分:0)

您可以使用Pythons string.replace方法解决此问题:

#Read in the a file
with file = open('file.txt', 'r') :
    filedata = file.read()

#Replace 'the_word' with * 'the_word' * -> "highlight" it
filedata.replace(the_word,  "*" + the_word + '*')

#Write the file back
with file = open('file.txt', 'w') :
    file.write(filedata)`