2つのタブ区切りファイルがあり、最初のファイルのすべての行をもう1つのファイルのすべての行に対してテストする必要があります。例えば、ネストされたループを1つだけ中断する方法
FILE1:
3210FILE2:
row1 c1 3455 3800
row2 c3 6784 7843
row3 c3 10564 99302
row4 c5 1405 1563
のは、私が[3]ファイル1のよりも小さいCOLのために(FILE1)での出力のすべての行したいとしましょうcol [1]が同じであるとすると、file2のcol [2]のいずれか(すべてではない)。
予想される出力:
row1 c1 36 345 A
row2 c3 36 9949 B
私はUbuntuの中で働いているので、私はこのように見えるように入力コマンドを希望:
import sys
filename1 = sys.argv[1]
filename2 = sys.argv[2]
file1 = open(filename1, 'r')
file2 = open(filename2, 'r')
done = False
for x in file1.readlines():
col = x.strip().split()
for y in file2.readlines():
col2 = y.strip().split()
if col[1] == col2[1] and col[3] < col2[2]:
done = True
break
else: continue
print x
:
python code.py [file1] [file2] > [output]
私は、次のコードを書きました
ただし、出力は次のようになります。
row2 c3 36 9949 B
これは大きなデータセットでは明らかですが、基本的にはネストされたループの条件が真であった最後の行のみを取得します。私は、 "休憩"が両方のループから私を壊していることを疑う。私は、(1)forループのどれかから抜け出す方法、そして(2)これが私がここにいる唯一の問題ならば知りたいです。
「break」は、あなたを最も内側のループから壊すだけです。 –
関連項目:[2つのファイルを比較して新しいファイルに書き込むが、出力は数行だけですか?](http://stackoverflow.com/questions/18514979/compare-two-files-and-write-to-a-new- file-but-only-output-a-few-lines)は、 –