2つのテキストファイルを重複排除しようとすると問題が発生します。 これはかなり簡単な作業ですが、状況は次のとおりです。Python:双方向重複除外
同じPythonスクリプトで作成された2つのテキストファイルがあります。 各ファイルは次のようにされて、同じ形式のラインのX番号が含まれています
Keys added,HKLM\SOFTWARE\Wow6432Node\Microsoft\Tracing\notepad++_RASAPI32 Keys added,HKLM\SOFTWARE\Wow6432Node\Microsoft\Tracing\notepad++_RASMANCS Keys added,HKLM\SYSTEM\ControlSet001\Control\Class\{3A1380F4-708F-49DE-B2EF-04D25EB009D5} Keys added,HKLM\SYSTEM\ControlSet001\Enum\Root\LEGACY_PROCMON23 Keys added,HKLM\SYSTEM\ControlSet001\Enum\Root\LEGACY_PROCMON23\0000 Keys added,HKLM\SYSTEM\ControlSet001\Enum\Root\LEGACY_PROCMON23\0000\Control Keys added,HKLM\SYSTEM\ControlSet001\services\PROCMON23
私はテキストファイルA、ファイルBとまったく同じラインのいくつかを持っているという事実を知っているが、それはまた、持っていますユニークな線。ファイルBにも一意の行があります(もちろん、ファイルAにはいくつかの行が正確に重複しています)。
私のスクリプトは3つのテキストファイルを出力したいと思います.1つはファイルAの一意の行、もう1つはファイルBの一意の行、もう一つは重複する行です。
私のスクリプトは私が望むものの半分をしているようですが、それは両方のファイルに存在するいくつかの行をピックアップしてテキストファイルに入れますが、処理中のファイルの書式設定は全く同じです(たとえば、別のPythonスクリプトを使用して作成したため)
たとえば、Keys added,HKLM\SYSTEM\ControlSet001\Enum\Root\LEGACY_PROCMON23
という行は、両方のファイルに存在しますが認識されません。
ただし、行番号Keys added,HKLM\SOFTWARE\Wow6432Node\Microsoft\Tracing\notepad++_RASAPI32
は両方のファイルにも存在しますが、認識されます。
私のスクリプトは次のようになります。
import sys
input_1 = open(sys.argv[1]).read().splitlines()
input_2 = open(sys.argv[2]).read().splitlines()
print 'First argument is biggest log'
dupes = open('overeenkomsten.txt', 'a')
onlyTen = open('onlyTen.txt', 'a')
onlySeven = open('onlySeven.txt', 'a')
for line in input_1:
#print line
if line in input_2:
#print 'check'
dupes.write(line+'\n')
else:
#print 'check 2'
onlyTen.write(line+'\n')
for line in input_2:
if line not in input_1:
#print 'check 3'
onlySeven.write(line+'\n')
else:
continue
dupes.close()
onlyTen.close()
onlySeven.close()
私は両方のファイル内のすべての行を横断していたい心に留めておく答えます。だから私がinput_1としてファイルの1つを取る場合、input_2にinput_2にどの行があるか知りたいので、input_2を通してforループを実行する必要があります。これはとてもたくさん見え事前
ファイルのサイズはどれくらいですか?あなたはset操作を使用できませんか? – Schore
数千から500.000 +までのラインがありますが、パフォーマンスを念頭に置いていないと、スクリプトを10分以上実行することができます(試しました)。あなたは、Oveが答えた答えを意味しますか? – Nick