두 개의 탭 구분 파일이 있는데 다른 파일의 모든 행에 대해 첫 번째 파일의 모든 행을 테스트해야합니다.하나의 중첩 루프에서 벗어나는 방법
row1 c1 36 345 A
row2 c3 36 9949 B
row3 c4 36 858 C
파일 2 :
row1 c1 3455 3800
row2 c3 6784 7843
row3 c3 10564 99302
row4 c5 1405 1563
하는의 내가 내지 컬럼 [3] 파일 1의보다 작은있는 (파일 1) 출력의 모든 행을 싶습니다 가정 해 봅시다 예,
파일 1의 경우 col [1]이 동일하다면 file2의 col (2)가 아닌 모든 col (2).
예상 출력 : 나는 우분투하고 있어요 때문에
row1 c1 36 345 A
row2 c3 36 9949 B
, 나는 다음과 같이하기 위해 입력 명령을 싶습니다
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'는 사용자를 가장 안쪽 루프에서 분해합니다. –
관련 내용 : [두 파일을 비교하고 새 파일에 쓰지만 몇 줄만 출력 하시겠습니까?] (http://stackoverflow.com/questions/18514979/compare-two-files-and-write-to-a-new- file-but-only-output-a-few-lines) –