![](/img/trans.png)
[英]Counting matches / Comparing two text files in python with utf-8 encoding
[英]Comparing two text files in python and counting the differences
嗨,我一直在尝试比较 Python 中的两个文本文件,基本上我想打开它们并一次比较一个字符,如果字符不同,则将 1 添加到计数器,然后显示该值。
这是我到目前为止所拥有的:
#!/usr/bin/env python
diff = 0
import random
import string
import sys
file_A = sys.argv[1]
file_B = sys.argv[2]
read_A=open(file_A,'r').read()
read_B=open(file_B,'r').read()
for a in read_A:
for b in read_B:
if a != b:
diff = diff + 1
return diff
break
print "No of Differences ",diff
现在它确实计数,但它返回的值似乎不正确。
任何建议或帮助将不胜感激
最简单的方法是使用difflib 。 它不需要任何额外的python鸡蛋,并且可以很好地跟踪各种diff检查。 差异检查的结果将是您期望检查是否相等以及紧密匹配的结果。 如果允许对结果进行加权,那也可能很重要。
循环不一定是执行此操作的Python方法。 无需使用任何外部库,就可以使用简单的列表推导来查找两个文件之间的差异实例:
如果顺序很重要:
x=[i for i, j in zip(read_A, read_B) if i != j]
print len(x)
如果订单不显著:
x=[i in read_B for i in read_A]
#Now count the instances where the comparison resulted in False
i = x.count(False)
如果您有两个要逐个字符比较的字符串,则最好压缩它们。
因此,一旦执行此操作:
read_A=open(file_A,'r').read()
read_B=open(file_B,'r').read()
你做:
for char_a, char_b in zip(read_A, read_B):
if char_a != char_b:
# something
如果文件很大,您可能希望仅逐个字符地读取字符,并使用izip
而不是zip
...
顺便说一句...
您没有关闭文件。 始终以这种方式访问文件是一个好主意:
with open(file_A, 'r') as f1:
read_A = f1.read()
with open(file_B, 'r') as f2:
read_B = f2.read()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.