単語リストから特定のキーを削除する方法は?

単語リストから特定のキーを削除する方法は?

私はクランチを使用して03000000000で始まり、03999999999で終わるキーワードのリストを生成しました。

だから私がしたいのは、特定の数のキーを削除することです。たとえば、03509999999から03999999999までのキーを削除したいと思います。

だから簡単にできる方法を知りたいです。単語リストファイルは12 GBなので、開いて手動で実行することはできませんが、端末でいくつかの簡単なコマンドを使用して実行することをお勧めします。

私はカーリーLinuxを持っています。

ベストアンサー1

単語が1行にあり、並べ替えられていると仮定すると、次のことができます。

head --lines 509999999 input_file

ファイルが次の場合:

03000000000 03509999998 03509999999 03510000000 03999999998
03000000001 03999999999 03000000002

(つまり、並べ替えられていない複数の項目が連続している場合)、次のPythonプログラムを使用できます。

import sys

def read(fp):
    buf = ""
    while True:
        if ' ' in buf or '\n' in buf:
            try:
                word, buf = buf.split(None, 1)
            except ValueError:
                word, buf = buf.strip(), ""
            if word:
                yield word
        if not buf:
            buf = fp.read(100)
        if not buf:
            yield None

with open(sys.argv[1]) as fp:
    for x in read(fp):
       if x is None:
           break
       if sys.argv[2] <= x <= sys.argv[3]:
           continue
       print x

で始めてくださいpython test.py inputfile 03509999999 03999999999。出力単語は元の単語と同じ順序になっていますが、すべての単語は改行で区切ります。

おすすめ記事