1

Python で difflib.compare を使用して、2 つのテキスト ファイルを比較します。比較は本質的に文字列のリストを返すことを知っています。文字列が最初のテキスト ファイルに固有の場合、文字列の前に「-」を配置し、文字列が 2 番目のテキスト ファイルに固有の場合、文字列の前に「+」を配置します。

私の問題は、保持する文字列を決定するためのコードを作成しようとしていることです。現在、各文字列で「-」を探し始めました。見つかった場合は、その文字列を使用するかどうかを判断するロジックを実行しました。使用しない場合は、「+」を1行または2行調べました。

ほとんどすべての場合、「-」行が「+」行の前にありました。しかし今、「+」行が「-」行の前にあるインスタンスを取得しています。これは、出力テキスト ファイルに書き込む正しい行が見つからないため、コードを破棄しています。文字列が配列に書き込まれる方法の背後にあるロジックを知っている人はいますか?最初に来る行番号に基づいていますか?

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;"
4

1 に答える 1

0
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 には出力がない、またはその逆であることを意味します。

于 2013-11-12T17:36:08.760 に答える