如何检索两个字符串之间的值

时间:2014-04-02 09:02:03

标签: python json

我有一个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。”

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您必须解析json并将其转换为dict。在dict中,您可以检查密钥。如果两个键都存在,那么您可以打印数据。

如果你愿意,我可以为此提供代码。但更好的是你尝试自己,否则我会帮助你。

答案 2 :(得分:0)

一些改进:

  1. 你不知道他是否想打印或使用这些值,所以我把它包装成一个函数
  2. 您无法确定 set 键只包含两个值,因为他使用[-1]请求最后一个值更好。
  3. 如果您只想使用异常捕获 KeyError 而不是所有异常,我个人更喜欢使用 if ,因为它更清晰但这是一个风格问题

    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)
    
  4. [你的文字a。',你的文字b']