我在这个网站上找到了很多以前搜索到的信息,但我似乎被困在下面的问题上。在
我有两个像这样的文本文件
在内部.txt(n行但只显示4行,你明白了)
7275
30000
6693
855
....
在规则.txt(2n行)
^{pr2}$我想比较第一行内部.txt与规则.txt如果是一场比赛,我跳n条线来得到那条线的分数。(例如7275,有一场比赛,我跳n得到3分)
我生成了下面的代码,但是由于某些原因,我只有第一行的输出,而我应该对第一个文件中的每个匹配项有一个输出。在前面的例子中,我应该有8作为6693的输出。在
import linecache
inter = open("Inter.txt", "r")
rules = open("rules.txt", "r")
iScore = 0
jump = 266
i=0
for lineInt in inter:
#i = i+1
#print(i)
for lineRul in rules:
i = i+1
#print(i)
if lineInt == lineRul:
print("Match")
inc = linecache.getline("rules.txt", i + jump)
#print(inc)
iScore = iScore + int(inc)
print(iScore)
#break
else:
continue
所有的印刷品都在那里,因为我检查了所有的行都读过了。我是Python的新手。在
总之,我不明白为什么我只有一个输出。提前谢谢!在
好吧,我认为阻止你前进的主要原因是文件上的for循环会得到指向文件结尾的指针,而当你再次开始循环时,它不会重置。在
所以当你只打开规则.txt有一次,它在内部循环中使用它的存在,它只在第一次外循环迭代时遍历所有的行,第二次它尝试遍历剩余的行,这些行是非的。在
解决方案是在内部循环之外关闭和打开文件。 这个代码对我有用。在
我还把I设为0的地方移到了外循环的开头,但我想你自己会找到的。在
我把跳转改为4以适应你给出的示例文件:p
你能试试这个办法吗:
希望对你有用!在
相关问题 更多 >
编程相关推荐