2013-08-13 2 views
-2

에 열을 비교하려면 다음이 6 필드 (I, E 열 (0-5))는 파일을 읽고 예를 들어 파이썬

n 작업을 포함

1 0 9227 1152 34 2 
2 111 7622 1120 34 2 
3 68486 710 1024 14 2 
6 265065 3389 800 22 2 
7 393152 48438 64 132 3 
8 412251 46744 64 132 3 
9 430593 50866 256 95 4 
10 430730 10770 256 95 4 
11 433750 12701 256 14 3 
12 437926 2794 64 34 2 
13 440070 43 32 96 3 
14 440102 44 32 96 3 
15 440357 43 32 96 3 
16 440545 43 32 96 3 
17 440599 43 32 96 3 
18 440625 43 32 96 3 
19 440999 84 32 96 0 
20 441574 44 32 96 3 
````````````````````````````````````````` 
````````````````````````````````````````` 
````````````````````````````````````````` 
````````````````````````````````````````` 
````````````````````````````````````````` 
````````````````````````````````````````` 

: 은은 File2.txt의 내용을 고려

예를 들어, 처음 19 가지 직업을 기록으로 봅니다. 그런 다음 나는 역사에서 위의 작업과 일치하는 열 을 비교하면서 20 일부터 읽기 시작해야합니다. 예에서 20 번째 작업이 6 (13,14,15,16,17,18) 6 개의 작업과 일치하는 경우 이제 column2? 만 포함하는 일치하는 작업의 목록을 만들어야합니다.

어느 한 날이 20st 라인을 읽고 위의 역사를 비교하고 파일의 끝에 도달 할 때까지 21,22,23------------------을 계속하는 한 그 수에 의해 파이썬 코드 ......

+0

코드/텍스트 파일을 포맷하십시오. – tobspr

+0

@SwethaH 제발, 당신이 달성하고자하는 것을 명확히 할 수 있습니까? –

+1

오, 알겠습니다. 열의 수는 0부터 시작합니다. 가장 혼란스러운 설명. 스크립트 작성 시도는 어디에 있습니까? – Vorsprung

답변

2
를 제안 할 수 이 당신을 위해 작동하는 경우

확인 :

>>> history = {} 
>>> historycount = 17 
>>> for line in open("filename"): 
    job = line.split() 
    jobmatch_criteria = '-'.join(job[-3:]) 
    if historycount > 0: 
     history.setdefault(jobmatch_criteria,[]).append(job) 
     historycount -= 1 
    else: 
     print "Job", job[0], "Matched with:", '\n\t'.join(' '.join(i) for i in history[jobmatch_criteria]) if jobmatch_criteria in history else "None" 


Job 20 Matched with: 13 440070 43 32 96 3 
    14 440102 44 32 96 3 
    15 440357 43 32 96 3 
    16 440545 43 32 96 3 
    17 440599 43 32 96 3 
    18 440625 43 32 96 3 
Job 21 Matched with: 6 265065 3389 800 22 2 

나는 테스트 데이터로 이것을 사용 :

1 0 9227 1152 34 2 
2 111 7622 1120 34 2 
3 68486 710 1024 14 2 
6 265065 3389 800 22 2 
7 393152 48438 64 132 3 
8 412251 46744 64 132 3 
9 430593 50866 256 95 4 
10 430730 10770 256 95 4 
11 433750 12701 256 14 3 
12 437926 2794 64 34 2 
13 440070 43 32 96 3 
14 440102 44 32 96 3 
15 440357 43 32 96 3 
16 440545 43 32 96 3 
17 440599 43 32 96 3 
18 440625 43 32 96 3 
19 440999 84 32 96 0 
20 441574 44 32 96 3 
21 265065 3389 800 22 2 
+0

Upvoted !! 이것은 내 솔루션보다 더 비색 해 보인다. 고마워요 :) – thefourtheye

+0

@ mshsayem 감사하지만 역사는 22 일에 대한 고정 길이되지 않습니다 역사는 21 일 것입니다 & 제 23 직업에 대한 역사는 24 일 것입니다 .... PLZ 내가 어떻게 할 수 있는지 말해 .. ... –

+0

필요에 따라'history' 사전을 업데이트하십시오. – mshsayem