2016-09-14 3 views
1

프로그래밍에 익숙하지는 않지만 파이썬 데이터 구조에서는 좋지 않습니다. 나는 파이썬을 사용하여 JSON 형식으로 텍스트 파일을 변환하는 방법을 알고 싶습니다. 파이썬을 사용하여 들었으므로 import.json이라는 모듈을 사용하면 훨씬 쉽게 작업을 수행 할 수 있습니다. 첫 번째 줄 "B 세포"를Python을 사용하여 텍스트 파일을 JSON 형식으로 변환

Source Target Value 
B cells Streptococcus pneumoniae 226 
B cells Candida albicans 136 
B cells Mycoplasma 120 

소스처럼

파일은, 대상이 "폐렴 구균"이고 값이 "226"인 보인다. 방금 코드를 시작했지만 완료 할 수 없었습니다.

import json 
prot2_names = {} 
tmpfil = open("file.txt", "r"); 
for lin in tmpfil.readlines(): 
    flds = lin.rstrip().split("\t") 
    prot2_names[flds[0]] = "\"" + flds[1] + "\"" 
    print prot2_names+"\t", 
tmpfil.close() 

당신은 csv 파일로 읽고 json로 변환 할 수있는 출력이

{ 
    "nodes": [ 
    { 
     "name": "B cells" 
    }, 
    { 
     "name": "Streptococcus pneumoniae" 
    }, 
    { 
     "name": "Candida albicans" 
    }, 
    { 
     "name": "Mycoplasma" 
    }, 
    { 
    "links": [ 
    { 
     "source": 0, 
     "target": 1, 
     "value": "226" 
    }, 
    { 
     "source": 0, 
     "target": 2, 
     "value": "136" 
    }, 
    { 
     "source": 0, 
     "target": 3, 
     "value": "120" 
     } 
    ] 
} 
+0

먼저 손으로 해본 적이 있습니까? –

+0

JSON 출력을 어떻게 보이게할까요? 기본적인 아이디어는 입력 파일을 파이썬리스트와 딕셔너리의 계층 구조로 파싱 한 다음 json.dumps (최상위 목록 또는 dict)를 호출하여 JSON 문자열을 생성하는 것입니다. –

+0

'json'을 왜 사용하지 않았습니까? –

답변

0

처럼되고 싶어 도와주세요. 그러나 공백을 구분 기호로 사용 했으므로 공백을주의 깊게 처리해야합니다. 공백이있는 값은주의해서 처리해야합니다. 그렇지 않으면 가능한 경우 space 대신 분리자를 ,으로 만드십시오.

당신이 무슨 말을 하려는지에 대한 작동 코드

,

import csv 
import json 

with open('file.txt', 'rb') as csvfile: 
    filereader = csv.reader(csvfile, delimiter=' ') 
    i = 0 
    header = [] 
    out_data = [] 
    for row in filereader: 
     row = [elem for elem in row if elem] 
     if i == 0: 
      i += 1 
      header = row 
     else: 
      row[0:2] = [row[0]+" "+row[1]] 
      _dict = {} 
      for elem, header_elem in zip(row, header): 
       _dict[header_elem] = elem 
      out_data.append(_dict) 

print json.dumps(out_data) 

출력,

[ 
    { 
     "Source":"B cells", 
     "Target":"Streptococcus", 
     "Value":"pneumoniae" 
    }, 
    { 
     "Source":"B cells", 
     "Target":"Candida", 
     "Value":"albicans" 
    }, 
    { 
     "Source":"B cells", 
     "Target":"Mycoplasma", 
     "Value":"120" 
    }, 
    { 
     "Source":"B cells", 
     "Target":"Neisseria", 
     "Value":"111" 
    }, 
    { 
     "Source":"B cells", 
     "Target":"Pseudomonas", 
     "Value":"aeruginosa" 
    } 
] 

업데이트 : 그냥 당신이 필요로 json 샘플 업데이트 된 질문을 알아 차렸다. 희망, 내가 작성한 위의 예제로 그것을 구축 할 수 있습니다.

관련 문제