2014-04-02 20 views
2

我有一个json文件。我想要使​​用python检索两个字符串之间的值。如何检索两个字符串之间的值

{ 
    "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

一些改良效果:

  1. 你无法知道他想要的打印或在功能
  2. 使用的值,所以我一直把它包
  3. 你不能确定集合键将只包含两个值,因为他要求使用[-1]的最后一个值更好。
  4. 如果你想使用异常捕获仅KeyError异常,而不是所有的异常,我个人更喜欢使用如果,因为它更清晰,但是这是一个风格问题

    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) 
    

[ ','一些文字b']

相关问题