使用Python逐行比较两个文本文件

时间:2015-11-08 14:18:30

标签: python count line frequency

我有两个要比较的文本文件。第一个文件包含唯一的项目,第二个文件包含相同的项目但重复多次。我想看看第二个文件中每行重复多少次。这就是我写的:

import os
import sys

f1 = open('file1.txt')  # this has the 27 unique lines, 
f1data = f1.readlines()

f2 = open('file2.txt')  # this has lines repeated various times, with a total of 11162 lines
f2data = f2.readlines()

sys.stdout = open("linecount.txt", "w")


for line1 in f1data:
    linecount = 0
    for line2 in f2data:
        if line1 in line2:
        linecount+=1

    print line2, crime

问题是,当我将行计数结果加起来时,它返回11586,而不是11162.行数增加的原因是什么?

是否有另一种使用Python获取线路频率输出的方法?

2 个答案:

答案 0 :(得分:2)

https://docs.python.org/2.7/reference/expressions.html#in

  

对于Unicode和字符串类型,当且仅当 x y 的子字符串时,x in y才为真。

而不是

    if line1 in line2:

我认为你打算写

    if line1 == line2:

或者可以替换整个

for line2 in f2data:
    if line1 in line2:
        linecount+=1

阻止

if line1 in f2data:
    linecount += 1

答案 1 :(得分:1)

即使我们稍微更改了代码,它也无法正常工作。我从这段代码中得到了更好的结果。

>> import os
>> import sys

>> f1 = open('hmd4.csv')   
>> f2 = open('svm_words.txt')  

>> linecount = 0

>> for word1 in f1.read().split("."):
>>     for word2 in f2.read().split("\n"):
>>         if word1 in word2:
>>             linecount+=1 
>>             print (linecount)