【问题标题】:Trouble extracting key from JSON data从 JSON 数据中提取密钥时遇到问题
【发布时间】:2021-10-31 20:14:53
【问题描述】:

我有一个 JSON 数据,下面是部分数据的图片

Page 1 Page 2

通过这些数据,我想提取“文本”和“索引”值,它们是可以在“实体”键中找到的子键。我尝试使用以下方法进行此操作

with open('tweets.json') as f:
    data = json.load(f)

for item in data:
    for key, value in item['entities'].items():
        for v in value:
            if value:
                s_index = (v['indices'][0])
                e_index = (v['indices'][1])
                all_texts = (v['text'])

我设法检索“索引”值以将它们存储到各自的属性中。但是我在接收“文本”值时遇到问题,因为他们说有一个关键错误,如下所示


KeyError                                  Traceback (most recent call last)
<ipython-input-4-5729d0d2fa15> in <module>
     12                 s_index = (v['indices'][0])
     13                 e_index = (v['indices'][1])
---> 14                 all_texts = (v['text'])
     15 
     16 #cur.execute('INSERT INTO entities (tweet_id, type, value, start_index, end_index) VALUES (?, ?, ?, ?, ?)',

KeyError: 'text'

【问题讨论】:

    标签: python json dictionary for-loop


    【解决方案1】:

    那是因为有些“实体”没有属性“key”。

    您可以使用v.get('text'),如果键不存在则返回None,而不是选择像v['text'] 这样的“文本”,然后处理None 值。实际上,您也应该对“索引”这样做。

    您还可以检查您的变量 key 是否对应于您想要的实体类型(例如“hashtags”),因为每个实体都有不同的属性。

    请参阅Twitter documentation

    【讨论】:

    • 非常感谢!我是这方面的初学者,现在我理解得更好了,不胜感激
    • 很抱歉我试过了,但我没有足够的声誉,所以我不能投票!
    猜你喜欢
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 2021-10-12
    • 2014-11-30
    • 1970-01-01
    • 2020-11-28
    相关资源
    最近更新 更多