【问题标题】:python difflib compare output formatpython difflib比较输出格式
【发布时间】:2013-11-12 17:04:45
【问题描述】:

使用 difflib.compare 和 python 比较两个文本文件。我知道比较本质上返回一个字符串列表。当字符串对于第一个文本文件是唯一的时,它会在字符串之前放置一个“-”,当字符串对于第二个文本文件是唯一的时,它会在字符串之前放置一个“+”。

我的问题是我正在尝试编写一些代码来确定要保留哪个字符串。我目前开始在每个字符串中寻找“-”,如果找到它,我会执行一些逻辑来确定我是否要使用该字符串。如果我不打算使用它,那么我要么往下看一两行“+”。

在我的几乎所有情况下,“-”行都在“+”行之前。但现在我得到了“+”行在“-”行之前的实例。这是抛弃我的代码,因为它找不到正确的行来写入输出文本文件。有谁知道字符串如何写入数组背后的逻辑是基于哪个行号在前?

ex//
majority of the time out put is this:
"-    color: #ffffff;"
"+    color: #785642;"

but rarely it does come out the opposite:
"+    color: #785642;"
"-    color: #ffffff;"

【问题讨论】:

    标签: python compare difflib


    【解决方案1】:
    DIFFERENCE_OUTPUT = []
    
    def find_differences(list1, list2):
        list1 = sorted(list1)
        list2 = sorted(list2)
        for diff in difflib.ndiff(list1,list2): 
            DIFFERENCE_OUTPUT.append(diff)
        for line in DIFFERENCE_OUTPUT:
            if line.startswith("-"):
                #I would suggest change the '-' to the name of the file and print line to see what is there
                line = line.replace('-','NAME of List')
                print(line)
                ****preform task
            elif line.startswith("+"):
                ****preform task
    

    所有的“-”都应该用于 list1,所有的“+”都应该用于 list2。如果您在“-”之前看到“+”,则表示 list2 有输出,但 list1 没有,反之亦然。

    【讨论】:

    • 感谢提供的帮助,但这并不能真正解决我的问题。你为什么使用 ndiff,而不是比较。如果我错了,请纠正我,但 ndiff 用于比较两个列表而不是文本文件。你也遇到了和我一样的问题,它们出现的顺序。如果它不符合我的标准,我需要首先搜索“-”行,然后我需要获取该代码行的其他文本文件版本。正如我在问题中所说,我完全理解“+”和“-”代表什么。我的输出格式不一致。
    • 有时第一行代码出现在第二行之前,但有时反之亦然
    猜你喜欢
    • 2013-03-29
    • 1970-01-01
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 2021-05-16
    • 1970-01-01
    • 2018-10-26
    相关资源
    最近更新 更多