Python:在检查json键是否存在时得到“TypeError”?

2024-09-27 21:31:22 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我正在处理的json文件的一小部分

  {
      'kind': 'c',
      'items': [
        {
          'kind': 'c',
          'title': 'D',
          'htmlTitle': 'P',
          'link': 'h',
          'pagemap': {
            'hcard': [
              {
                'fn': 'A',
                'title': 'S'
              }
            ],
            'person': [
              {
                'org': 't',

              }
            ],
            'cse_image': [
              {
                'src': 'h'
              }
            ]
          }
        }
      ]
    }

因为有些项目中有个人密钥,而有些项目中没有。因此,为了检查项目是否包含个人密钥,我使用以下代码:

json = json.dumps(results)
for profile in range (0, 10):
    if 'person' not in json['items'][profile]['pagemap']:
        org="null"
    else:
        org= results['items'][profile]['pagemap']['person'][0]['org']
        #results stores the json response.

但在运行程序时,它会给出一个错误,说明“TypeError:字符串索引必须是整数”


Tags: 文件项目inorgjsontitle密钥link
1条回答
网友
1楼 · 发布于 2024-09-27 21:31:22

您将json和results这样的变量名混合在一起,这很混乱。因此,我已根据需要重新命名,以实现您可能真正想要的

在本例中,json文件是“test.json”,因为我不知道您的json文件名

我留下了打印行,这样你就可以看到发生了什么。您可以在测试时移除它们

with open('test.json') as r:
    dic = json.load(r)

result = []

for profile in range(len(dic['items'])):
    print('profile:', profile)
    print('pagemap:', dic['items'][profile]['pagemap'])

    if 'person' not in dic['items'][profile]['pagemap']:
        org = "null"
    else:
        org = dic['items'][profile]['pagemap']['person'][0]['org']

    print('org:', org)
    result += [org]

print('result:', result)

相关问题 更多 >

    热门问题