-1

解決策を見つけるために、私は数日を失いましたが、成功しませんでした! 多くの行を含む 2 つのテキスト ファイルがあります。1 つのファイルには、79357795 79357796 68525650 のように、数千行の数字が含まれる場合があります。

2 番目のファイルにも数値が含まれていますが、多すぎず、おそらく 100 行 (1 行に 1 つの数値) 含まれています。いくつかの「アルゴリズム」を試しましたが、成功しませんでした。さて、私の質問は次のとおりです。最初のファイルの最初の行を2番目のファイルのすべての行でチェックし、その後、最初のファイルの2行目を2番目のファイルのすべての行でチェックし、ファイルの最後までチェックできますか? その結果、この 2 つのファイルの違いを 3 番目のファイルに保存したいと思います。返信ありがとうございます。私の最悪の英語で申し訳ありません。:)

PS: そうそう、Python でこれを行う必要があります。

詳細: first_file.txt の内容:

79790104
79873070
69274656
69180377
60492209
78177852
79023241
69736256
68699620
79577311    
78509545
69656007
68188871
60643247
78898817
79924105
79684143    
79036022
69445507
60605544
79348181
69748018
69486323
69102802
68651099

second_file.txt には以下が含まれます。

78509545    
69656007    
68188871    
60643247
78898817    
79924105    
79684143    
79036022    
69445507
60605544    
79348181    
69748018    
69486323    
69102802
68651099
79357794
78953958
69350610
78383111
68629321
78886856

third_file.txt には、first_file.txt には存在しないが 2 番目のファイルに存在する番号を含める必要があります。この場合:

79357794
78953958
69350610
78383111
68629321
78886856
4

4 に答える 4

0

はい。

編集:これにより、両方のリストにあるすべての数値が得られます(これが最初に求めたものです)。データセットが必要とするものについては、他の回答を参照してください。(私は1_CRの答えが好きです。)

with open('firstfile.txt') as f:
    file1 = f.read().splitlines()

with open('secondfile.txt') as f:
    file2 = f.read().splitlines()

for x in file1:
    for y in file2:
        if x == y:
            print "Found matching: " + x
            #do what you want here

もっと効率的にすることもできますが、ファイルはそれほど大きくないように聞こえます。これが最も簡単な方法です。

于 2013-05-31T15:34:52.190 に答える
0

私があなたなら、それらのファイルを 2 つのリストにロードし、そのうちの 1 つを反復処理して、2 つ目のリストの各値を調べます。

于 2013-05-31T15:35:38.117 に答える
0

ファイルがメモリにロードするのに十分小さい場合、セットはオプションです

with open('firstfile.txt') as f1, open('second_file.txt') as f2:
    print '\n'.join(set(f2.read().splitlines()).difference(f1.read().splitlines()))
于 2013-05-31T16:32:36.103 に答える