【问题标题】:Parsing multiple occurrences of an item into a dictionary将多次出现的项目解析为字典
【发布时间】:2016-04-13 16:35:02
【问题描述】:

尝试通过 python 解析来自 JSON 数据的几个单独的图像链接,但由于我认为有一个字符串列表,因此有一些问题深入到正确的级别。

对于大多数项目,我在下面的示例中取得了成功,撤回了我需要的所有内容。在此实例之外,所有内容都是 1:1 的键:值比例,但对于这个实例,有多个值与一个键关联。

resultsdict['item_name'] = item['attribute_key']

我一直将其全部添加到 resultsdict={},但我只能在打印时访问下面的示例字符串。

输入:

for item in data['Item']:
    resultsdict['images'] = item['Variations']['Pictures']

输出(仅相关部分):

'images': [{u'VariationSpecificPictureSet': [{u'PictureURL': [u'http//imagelink1'], u'VariationSpecificValue': u'color1'}, {u'PictureURL': [u'http//imagelink2'], u'VariationSpecificValue': u'color2'}, {u'PictureURL': [u'http//imagelink3'], u'VariationSpecificValue': u'color3'}, {u'PictureURL': [u'http//imagelink4'], u'VariationSpecificValue': u'color4'}]

我觉得我可以在初始输入的末尾添加['VariationPictureSet']['PictureURL'],但由于索引不是整数而是字符串,这会引发错误。

理想情况下,我希望将输出视为仅包含 URL 的简单逗号分隔列表,如下所示:

输出:

'images': http//imagelink1, http//imagelink2, http//imagelink3, http//imagelink4

【问题讨论】:

  • 你得到的错误到底是什么,因为看起来你有 unicode 字符串,也许你需要转换它们。
  • @uzzee 这取决于我尝试的输入。复制输入的其他区域,我会使用... resultsdict['images'] = items['Variations']['Pictures']['VariationsSpecificPictureSet']['PictureURL'] 并得到错误:列表索引必须是整数,而不是 str
  • 好的,试试resultsdict['images'] = items['Variations']['Pictures'][0]['VariationsSpecificPictureSet'][0]['PictureURL']
  • @uzzee 这当然有帮助,谢谢。我将如何访问所有符合该标准的图片链接?

标签: python string parsing dictionary


【解决方案1】:

对您的评论的回答需要一些代码。

使用时

for item in data['Item']:
    resultsdict['images'] = item['Variations']['Pictures']

你会得到一个包含一个元素的列表,所以我建议使用这个

for item in data['Item']:
    resultsdict['images'] = item['Variations']['Pictures'][0]

现在你可以使用

for image in resultsdict['images']['VariationsSpecificPictureSet']:
    print(image['PictureUR‌​L'])

【讨论】:

    【解决方案2】:

    感谢@uzzee 的帮助,非常感谢。我一直在修改它,并且能够使用以下代码提取所有图像 URL 的连续字符串。

    resultsdict['images'] = sum([x['PictureURL'] for x in item['variations']['Pictures'][0]['VariationSpecificPictureSet']],[])
    

    如果没有总和,它看起来像这样并拉入整个列表列表......

    resultsdict['images'] = [x['PictureURL'] for x in item['variations']['Pictures'][0]['VariationSpecificPictureSet']]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-11
      • 1970-01-01
      相关资源
      最近更新 更多