私はオンラインで回答を検索しようとしましたが、残念ながら成功しませんでした。したがって、私はここに尋ねています:file1の行がfile2の行のサブセットであるかどうかをテストします。
file1
のすべての行がfile2
に存在するかどうかを調べようとしています。幸運にも、個々の単語などではなく、行全体を比較することができます。不運にも私はGBファイルを扱っていますので、私が試した基本的な解決法のいくつかが私にメモリエラーを与えました。
現時点では、次のコードは動作しません。いくつかの指針は非常に高く評価されます。
# Checks if all lines in file1 are present in file2
def isFile1SubsetOfFile2(file1 , file2):
file1 = open(file1, "r")
for line1 in file1:
with open(file2, "r+b") as f:
mm=mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
my_str_as_bytes = str.encode(line1)
result = mm.find(line1.strip().encode())
print(result)
if result == -1:
return False
return True
サンプルFILE2:
This is line1.
This is line2.
This is line3.
This is line4.
This is line5.
This is line6.
This is line7.
This is line8.
This is line9.
があれば渡す必要があり、例えばファイル1は:
This is line4.
This is line5.
file1は:
This is line4.
This is line10.
編集:私はちょうど他の人の利益のために自分のコードの作業バージョンを追加しました。メモリエラーはありませんが、非常に遅いです。
Ickでは、あなたのコードは 'O(m * n)'です。 'O(m log m + n log n) 'でこれを行うことは自明で、' O(m + n) 'でも可能です。 – o11c
Algoの複雑さなどについては、私の頭の上にあります。 – Ali
その後、プログラミングについては*何か他のことを学ぶ前に、アルゴリズムの複雑さとbig-O表記について学んでください。これは重要*。 – o11c