-1

次のようなファイルを読み取ろうとしています。

    83 124 125
    83 125 126
    83 126 127
    83 127 128
    83 128 128
    154 120 120
    154 120 121
    154 121 122
    154 122 123
    154 123 124
    122 92 93
    122 93 94
    122 94 95
    122 95 96
    122 96 97

そして、値のセットごとに異なるファイルに書き込みます。最初の値 ( 83/ 154/ 122) は、テキスト ファイルの名前である必要があります。残りの値は、次のように対応するファイルに書き込む必要があります。124 128

したがって、ファイル"83.txt"には124 128. ファイル"154.txt"には120 124. ファイル"122.txtには92 97.

上記の入力を繰り返し処理し、最初の列から重複した値を削除するにはどうすればよいですか? 次に、最初の値のそれぞれが共有する最小値と最大値の取得に進みますか? 最後に、特定のフォルダー内の新しいテキスト ファイルに各行を個別に書き込みますか?

私は使用しようとしました:

from itertools import chain
from collections import defaultdict
from operator import itemgetter
from itertools import groupby

def final(f):
    with open (f+'.txt', 'r') as fin:
        lines = fin.readlines().split().strip('\n')
        v1, v2, v3 = lines[0], lines[1], lines[2]
        for v1, g in groupby(enumerate(diffs[v1x]), lambda (i, x): i - x):
            group = map(itemgetter(1), g)
            lines.itertools.chain()
            lines = defaultdict(list)
            print (lines),

これは私が以前持っていたものの不完全なバージョンですが、以前のように機能させることはできないようです. とにかく、私のコードは非常に長くなり、読みにくくなりました...これに答えるためにさらに詳細が必要な場合は、それらを提供します。単純に自分の粗いコードを投稿して誰かに微調整してもらうのではなく、これについてさまざまな見方をしたいと思います。

4

2 に答える 2

1

ファイル名が「順番どおり」で、他の項目が順番どおりであると仮定すると、次のようになります。

from itertools import groupby
from operator import itemgetter
from collections import deque

with open('/home/jon/testdata.txt') as fin:
    lines = (line.split() for line in fin)
    for k, g in groupby(lines, itemgetter(0)):
        fst = next(g)
        lst = next(iter(deque(g, 1)), fst)
        with open(k + '.txt', 'w') as fout:
            fout.write(fst[1] + ' ' + lst[2])
于 2013-06-03T20:38:21.093 に答える