2014-08-27 2 views
0

두 개의 데이터 파일이 있습니다. 하나는 분류 된 유전자 노드 쌍을 갖고 다른 하나는 유전자 쌍 발생 및 가중치의 수를 갖는다.일부 데이터 조작으로 두 파일 병합 Python

두 파일의 유전자 쌍이 파일 쌍의 유전자 쌍과 비교되고 해당 발생 횟수와 가중치가 세 번째 파일에 기록되는 방식으로 두 파일을 병합해야합니다.

그냥 파일 1의 유전자 쌍과 일치하고 파일 2의 해당 값을 가져 와서 세 번째 파일에 쓰는 것입니다.

간단하게 들릴지 모르지만 나는 실제로 어디에서 시작 해야할지 모르겠다.

+4

작게 만들기 위해 편집 할 수 있습니까? _ 추상 _? –

+2

빌트인 함수'zip'이 당신에게 유용 할 수 있습니다. 2 개 (또는 그 이상)의리스트를 취해 대응하는 값과 일치시킵니다. – Kevin

답변

1
file1 = open('filename1.txt') 
file2 = open('filename2.txt') 

d1 = {} 
d2 = {} 

for row in file1: 
    cols = row.split(',') 
    key = cols[0] + cols[1] 
    d1[key] = cols 

for row in file2: 
    cols = row.split(',') 
    key = cols[0] + cols[1] 
    d2[key] = cols 


file1.close() 
file2.close() 

이제 2 개의 dicts를 사용하여 데이터를 파일로 출력하십시오.

filedata = "" 

for key in d1 : 
    if key in d2 : 
     filedata += "%s, %s, %s, %s\n" % (d1[key][0], d1[key][1], d2[key][2], d2[key][3]) 

file3 = open('output.txt', 'w') 
file3.write(filedata) 
file3.close() 
+1

그 코드는 오류입니다. 당신은 단순히 dicts를 덮어 씁니다. – Dan

+0

그러나 여기서는 'file1'' col [0]''col [1]'과''file2'' col [0]''col [1]'이 유사하다면'file2'의 값을 가져 오기 전에 비교합니다. 'col [2]''col [3]'. –

+1

업데이트 됨 예 (dicts를 덮어 썼습니다 :( – beiller

0

일반적으로 다음을 수행해야합니다

  • 은 당신이 (키)과 일치 할 데이터를 추출하는 두 파일과 당신이 새 문서에 주석 할 데이터를 구문 분석 할 수 있어야합니다 (값을)
  • 유용한 정보의 양이 적은 파일 중 하나를 읽은 다음 키와 값을 적절한 메모리 구조에 저장합니다. dict
  • 두 번째 파일을 읽고 첫 번째 파일에서 만든 dict의 키와 비교하여 세 번째 파일에 원하는 결합 된 데이터를 쓰십시오.
+0

단계가 잘된 것 같습니다. 감사합니다! 적절한 코드를 조합해야합니다. –