我有兩個製表符分隔的文件,我需要測試第一個文件中的每一行對其他文件中的所有行。例如,如何突破只有一個嵌套循環
文件1:
3210文件2:
row1 c1 3455 3800
row2 c3 6784 7843
row3 c3 10564 99302
row4 c5 1405 1563
比方說,我想輸出(文件1)對於這山坳[3]文件1的小於所有行考慮到col [1]是相同的,file2的任何(不是每個)col [2]。
預期輸出:
row1 c1 36 345 A
row2 c3 36 9949 B
因爲我在Ubuntu的工作,我想輸入的命令是這樣的:
python code.py [file1] [file2] > [output]
我寫了下面的代碼:
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
但是,輸出如下所示:
row2 c3 36 9949 B
這對於較大的數據集是很明顯的,但基本上我總是隻得到嵌套循環中條件爲真的最後一行。我懷疑「休息」正在打破我的兩個循環。我想知道(1)如何擺脫唯一的for循環,以及(2)如果這是我在這裏得到的唯一問題。
'break'只會讓你跳出最內層循環。 –
相關:[比較兩個文件,並寫入一個新的文件,但只輸出幾行?](http://stackoverflow.com/questions/18514979/compare-two-files-and-write-to-a-new-文件,但只輸出-A-幾線) –