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)