Python 计数和高光有问题

Python 计数和高光有问题,python,python-3.x,Python,Python 3.x,我试图创建两个函数。一个使用两个参数,一个文件名和一个关键字。它需要突出显示单词并返回突出显示的单词或带有行号的单词 第二个函数计算特定单词在文件中出现的次数。这一个再次使用了两个参数:文件名和关键字 这一个叫做高光。它需要查看每一行,找到关键字,然后返回行号,行号中突出显示的关键字在左边用“-->”括起来,“如果迭代文件中的行,则每一行都以换行符”\n“结尾 如果您预先添加了'-->'并附加了'RocketRocketRocketRocketRocketRocketRocketRocketRo

我试图创建两个函数。一个使用两个参数,一个文件名和一个关键字。它需要突出显示单词并返回突出显示的单词或带有行号的单词

第二个函数计算特定单词在文件中出现的次数。这一个再次使用了两个参数:文件名和关键字


这一个叫做高光。它需要查看每一行,找到关键字,然后返回行号,行号中突出显示的关键字在左边用“-->”括起来,“如果迭代文件中的行,则每一行都以换行符
”\n“
结尾


如果您预先添加了
'-->'
并附加了
'RocketRocketRocketRocketRocketRocketRocketRocketRocketThat,效果很好,谢谢,但我仍然有一个问题,那就是为突出显示部分标记行号。输出应在开头列出行号示例:1:-->Rocket@j.a.martin使用enumerate在排除不匹配的内容之前枚举行-请参阅编辑。非常感谢您的帮助。我真的很感激。我希望将来能回答这些问题。
def highlight(filename, keyword):
    inpt = open(filename, "r")
    for line in inpt:
        if re.match(keyword, line):
            print ('-->',line,'<--')
def count_word(filename, keyword):
    fname = (filename)
    word= (keyword)
    count = 0
    with open(fname, 'r') as in_file:
        for line in in_file:
            words = line.split()
            for i in words:
                if(i==word):
                    count=count+1
                print (count)
I heart Rocket!
Rocket, Rocket, Rocket.
Don't say it.
Rocket, Rocket, Rocket!





Rocket!!!
highlight:
printed:
--> Rocket, Rocket, Rocket.
 <--
--> Rocket, Rocket, Rocket!
 <--
--> Rocket!!!
 <--

expected:
1:   I heart -->Rocket<--!
2:   -->Rocket<--, -->Rocket<--, -->Rocket<--.
4:   -->Rocket<--, -->Rocket<--, -->Rocket<--!
10:  -->Rocket<--!!!


count_word:

printed:
0
0
0
0
0
0
0
0
0
0
0
0
0

expected:
8
with open("k.txt","w") as f:
    f.write("""I heart Rocket!
Rocket, Rocket, Rocket.
Don't say it.
Rocket, Rocket, Rocket!





Rocket!!!""")
with open("k.txt") as f:

    # read all text
    text = f.read()

    # replace Rocket with -->Rocket<-- and store as text2
    text2 = text.replace("Rocket","-->Rocket<--")

    # split at \n, enumerate result starting at 1, remove any line 
    # that does not contain Rocket, join with \n
    text3 = text2.split("\n")
    text4 = [f"{row:2d} {x}" for row,x in enumerate(text3,1) if "Rocket" in x]
    text5 = "\n".join(text4)

    # Count rockets and print replaced text
    print(text.count("Rocket")) 
    print(text3)
    print(text4)
    print(text5)
# the rocket count
8  

# text3: all lines
['I heart -->Rocket<--!', '-->Rocket<--, -->Rocket<--, -->Rocket<--.', "Don't say it.", 
'-->Rocket<--, -->Rocket<--, -->Rocket<--!', '', '', '', '', '', '-->Rocket<--!!!']

# text4: with enumeration of line number 
[' 1 I heart -->Rocket<--!', ' 2 -->Rocket<--, -->Rocket<--, -->Rocket<--.', 
 ' 4 -->Rocket<--, -->Rocket<--, -->Rocket<--!', '10 -->Rocket<--!!!']

 # joined together again 
 1 I heart -->Rocket<--!
 2 -->Rocket<--, -->Rocket<--, -->Rocket<--.
 4 -->Rocket<--, -->Rocket<--, -->Rocket<--!
10 -->Rocket<--!!!
with open("k.txt") as f:
    text = "\n".join( 
        [f"{row:2d} {x}" for row,x 
         in enumerate( f.read().replace("Rocket","-->Rocket<--").split("\n"),1) 
         if "Rocket" in x])
    print(text.count("Rocket")) 
    print(text)