4

トランザクションのログによって生成された、行で区切られた口座番号のリストがあります。

このリストを、各アカウントが多数 (アカウントごとに複数のトランザクションがログに記録されている場合) ではなく、1 回だけ出現するファイルに統合するにはどうすればよいですか?

Python が推奨されますが、C も使用できます。

4

4 に答える 4

5
with open(filename) as fin, open(newfilename, 'w') as fout:
    fout.writelines(set(fin))
于 2013-07-01T23:30:42.037 に答える
1

サンプル ログ ファイルとオペレーティング システムを含めていただければ助かりました。

UNIX 環境であれば、awk と sort を使用すると非常に簡単です。

ログ ファイル (log.txt など) の各行の 3 番目の単語にアカウント情報が含まれている場合 (以下のログ ファイルのサンプルを参照):

LOG WARNING 12345 cancelled ....
LOG WARNING 67482 subscribed ....

以下の例を参照してください。ドル記号はコマンド プロンプトです。

$ awk '{print $3}' log.txt | sort -u

Windows 環境の場合は、Windows 用の cygwin ( http://www.cygwin.com/ ) をダウンロードしてインストールし、コマンド プロンプトから上記のコマンドを実行します。

于 2013-07-01T23:37:18.033 に答える
1

順序が重要な場合は、次を使用できますcollections.OrderedDict

from collections import OrderedDict

with open('input') as fin, open('output', 'w') as fout:
    uniques = OrderedDict.fromkeys(fin)
    fout.writelines(uniques)
于 2013-07-01T23:39:40.177 に答える