我正在搜索文本文件中的单词。它找到单词并返回包含单词的行。这很好,但我想在该行中突出显示或使单词变为粗体。
我可以在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
答案 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)`