2014-04-02 5 views
2

json 파일이 있습니다. 파이썬을 사용하여 두 문자열 사이의 값을 가져 오려고합니다.두 문자열 사이의 값을 검색하는 방법

이 출력이되어야합니다 :

{ 
    "101": { 

     "set": [ 
      "1012", 
      "some text a." 
     ], 
     "tag": "tagtext" 
    }, 
    "1027": { 
     "slide": [ 
      "1013757", 
      "x" 
     ] 
    }, 
    "1014220": { 
     "set": [ 
      "1018420", 
      "some text." 
     ], 
     "ans": "4th" 
    }, 
    "1019660": { 
     "set": [ 
      "1031920", 
      "Some text b" 
     ], 
     "tag": "tagtext" 
    }, 
    "1034280": { 
     "set": [ 
      "1040560", 
      "some text" 
     ], 
     "interact": "intertext" 
    }, 

내가 사이에서 데이터를 추출 할은태그 설정 "., 일부 텍스트" 을 "일부 텍스트 b."

+0

이것은 거의 정확히 [실제 문제 대신 시도한 해결책에 대해 묻는 표준적인 예입니다] (http : //meta.stackex change.com/questions/66377/what-is-the-xy-problem). "set"과 "tag"사이에서 데이터를 추출하고 싶지는 않습니다. 당신이 그것을 시도한다면, 당신은 모든 종류의 여분의 뭉뚝하고 잘못된 데이터를 얻을 것입니다. 필요한 것은 JSON 파서입니다. – user2357112

답변

0

json을 구문 분석하고이를 dict으로 변환해야합니다. dict에서 키를 확인할 수 있습니다. 두 키가 모두 있으면 데이터를 인쇄 할 수 있습니다.

원하는 경우 코드를 제공 할 수 있습니다. 그러나 더 나은 당신은 당신의 자신을 시도하십시오, 그렇지 않으면 나는 도울 것이다.

1

입력을 JSON으로 구문 분석하고 tag이 있는지 확인하십시오.

import json 

with open("j.json") as f: 
    j = json.load(f) 

for k, v in j.items(): 
    try: 
     s = v["set"] 
     t = v["tag"] 
     print(s[1]) 
    except: 
     # no tag 
     pass 

출력 :

some text a. 
Some text b 
0

몇 improvment : 그가의 인쇄하거나 기능에 그래서 그것을 포장 한 값을 사용하려는 경우

  1. 당신은 알 수 없다
  2. 세트 키는 [-1]을 사용하여 마지막 값을 요청했기 때문에 키가 두 개만 포함된다는 것을 알 수 없습니다. 당신은 예외 캐치에만 KeyError를 및 모든 예외를 사용하려면
  3. , 개인적으로 나는 을 사용하여 선호처럼 명확하게 그것을 그러나 이것은 스타일의 문제

    import json 
    
    with open("j.json") as f: 
        j = json.load(f) 
    
    def search(j): 
        ret = [] 
        for k, v in j.items(): 
         if v.get('set') and v.get('tag'): 
          ret.append(v['set'][-1]) 
        return ret 
    search(j) 
    

[입니다 u'ome text b ']

관련 문제