Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何比较平面文件的各个部分?_Python - Fatal编程技术网

Python 如何比较平面文件的各个部分?

Python 如何比较平面文件的各个部分?,python,Python,我有一些简单的数据存储在一系列文本文件中。每个记录一行,但每个记录的字段数量和类型可能不同 这些文件包含几乎相同的数据 存在一个理想的数据文件,必须将这些文件与之进行比较。有些字段可能会有所不同,但有些字段需要匹配。我现在还需要检查与主记录相比是否丢失/添加了任何记录 采取什么样的好方法 谢谢我修改了以下内容,只需对file1和file2中的每一行组合进行迭代。 我认为这里的建筑工程很好 def comparefiles(file1, file2): for row in file1:

我有一些简单的数据存储在一系列文本文件中。每个记录一行,但每个记录的字段数量和类型可能不同

这些文件包含几乎相同的数据

存在一个理想的数据文件,必须将这些文件与之进行比较。有些字段可能会有所不同,但有些字段需要匹配。我现在还需要检查与主记录相比是否丢失/添加了任何记录

采取什么样的好方法


谢谢

我修改了以下内容,只需对file1和file2中的每一行组合进行迭代。 我认为这里的建筑工程很好

def comparefiles(file1, file2):
    for row in file1:
        for row in file2:
             #check all of your lines, break if condition is met
        else:
             #no matches

我完全同意unutbu,你应该使用difflib

difflib.SequenceMatcher(None, file1.read(), file2.read())

你是想通过编程来比较文件,还是一个人在做比较,你只需要一个工具来帮助你突出两个文件之间的差异?你不能仅仅使用diff或一些并排的diffing工具吗?尝试通过编程来比较,而不是手工。Diff不起作用,因为大部分记录可能会发生变化,而且它也不一定是纯字符串比较。对于某些数字字段,关闭是可以的。您可以创建一个脚本来运行diff并将结果传递到您的程序吗?您必须将其解析为某种数据结构,然后从那里开始。您是否有一个数据示例,或者您不是在寻找关于如何进行此操作的详细信息?我知道这只是一个粗略的指南,但您可能还想检查文件2是否包含文件1中未包含的其他行。这肯定会起作用,但是,如果file2在开始时丢失了一条记录,有没有一种方法可以收集正确性的统计数据,而不是完全死掉呢?还请记住,我将循环通过20+个文件。如果中断没有完全消失,它将只退出第二个for循环。基本上,当您找到与文件1中的行相匹配的内容时,分隔符会说ok I find my match,我不再需要检查文件2。您将为迭代的每个文件2调用此函数。此函数返回的内容取决于您的使用情况,这里没有详细说明。查看difflib文档,但它似乎是为文本而构建的。在我的例子中,我也有非字符串文本数据。例如,1.9已经足够接近2.0了。@user489549:您可以进行第二次扫描来清理差异线。这样,copare行的大部分逻辑将留给difflib,自定义逻辑可以应用于更改的行。这样,当插入多行时,sequencer也可以进行匹配appropriately@user489549:事实上,如果缺少一些行,它不会死。它将出现在diff中。