2014-11-18 5 views
0

데이터 파일 세트에서 다른 파일에서 같은 쌍이 사용 가능한지 찾는 방법.파일 세트에서 쌍을 찾습니다.

예 : 노드 쌍이있는 5 개의 파일이 모두 col[0] col[1]에 있으며 두 파일 모두 확실히 쌍입니다.

모든 5 개의 파일에서 모든 쌍이 반복되는지 확인해야합니다.

의견을 보내 주시면 감사하겠습니다.

입력 : 일부만 col[0]col[1]이 5 개의 파일 모두에서 집중되는 열입니다.

00022d7317d7 00022d9064bc 1073260810 1073276155 819251 440006 819251 440006 
00022d9064bc 0030650497a0 1073260810 1073272525 819251 440006 819251 440006 
00022d9064bc 00904b8150f1 1073260810 1073260999 819251 440006 819251 440006 
00022d9064bc 00904ba69d11 1073260810 1073260857 819251 440006 819251 440006 
0030650c9eda 0030658a61de 1073260811 1073260813 820356 439224 820356 439224 
0030650c9eda 00904b16c23a 1073260811 1073260813 820356 439224 820356 439224 
0030650c9eda 00904bacceaf 1073260811 1073260813 820356 439224 820356 439224 
0030650c9eda 00904bf058d0 1073260811 1073260813 820356 439224 820356 439224 
00022d0e0cec 0030650c9eda 1073260813 1073262843 820187 439271 820187 439271 
00022d176cf3 00904ba8b682 1073260813 1073260962 817721 439564 817721 439564 

예상 출력

우리가 첫 번째 행을 고려한다면 가정 col[0]col[1]

00022d7317d7 00022d9064bc 

나는 모든 5 개 개의 파일이 쌍을 비교하고 수행하는 파일과 얼마나 많은 시간을 찾을 수있다 이 쌍이 나타납니다. 같은 방식으로 모든 5 개의 파일에서 모든 쌍을 비교해야합니다.

참고 :이 서비스는 코드 제공 서비스가 아닙니다. 따라서 샘플이나 제안 사항을 제시해 주시면 감사하겠습니다. 감사!

+0

지금까지 가지고있는 코드를 보여주고, 당신이 어려움을 겪고있는 어떤 구체적인 문제를 설명해주십시오. – ekhumoro

+0

각 행은 별도의 파일입니까? 또는이 파일이 하나 뿐이며 유사한 파일이 여러 개 있습니까? – abarnert

+0

더 일반적으로 해결하려는 문제에 대한 막연한 설명과 함께 코드 및 보유하고있는 부분과 함께 완전한 (그러나 최소한의) 입력 및 원하는 출력 세트를 제공하십시오. 자세한 내용은 [MCVE] (http://stackoverflow.com/help/mcve)를 참조하십시오. – abarnert

답변

0

또 다른 최근의 게시물에 내 대답을 적응 :

/path/data1.txt/path/data2.txt ... /path/dataN.txt/path/script.py 같은 폴더 구조를 가정하지 거기에 다른 파일.

  1. 모든 파일에 대한 정보를 추적하는 두 개의 사전을 초기화하십시오. 하나는 카운트 다른 파일 이름을 저장합니다 "N 번 볼 "저장합니다 "파일에서 볼 [데이터 1, 데이터 3]"외부 루프에서
  2. 받기 모든 .txt 파일. 각 파일에 대해 :
    1. 내부 루프의 모든 행을 읽습니다. 각 라인의 경우 : 첫 번째 두 개의 열이 밖으로
      1. 분할, 구분 기호로 공간을 사용하여, 한 쌍의
      2. 한 사전
      3. 현재 추가로,이 전반적으로 볼 된 횟수의 수를 증가 시킨다는 전화 그런 다음 다른 사전

위치 목록이 긴 5 모든 쌍에서이 쌍에 대한 파일 이름 목록에 파일 이름, 모든 파일에서 볼 수있다. 쌍을 인쇄하십시오. 그런 다음 각 쌍이 나타나는 횟수를 보려면 카운트 사전을 덤프하십시오.

(테스트되지 않은) :

from glob import glob 
import os 

masterCount = {} 
masterLocations = {} 

for datafile in glob('*.txt'): 
    filename = os.path.split(datafile)[1] 

    for line in open(datafile): 
     columns = line.split(' ') 
     pair = columns[0] + ' ' columns[1] 

     masterCount[pair] = masterCount.get(pair, 0) + 1 
     masterLocations[pair] = masterLocations.get(pair, []) + [filename] 

for pair, filenames in masterLocations.iteritems(): 
    if len(filenames) == 5: 
     print pair, "found in all 5 files" 

for pair, count in masterCount.iteritems(): 
    print: pair, "found", count, "times in total" 
+0

감사합니다 !!! 수정이 거의없이 정확히 내가 원하는 것을 얻었습니다. –

관련 문제