【问题标题】:Parse single qouted dictionary key and value in Python在 Python 中解析单个 qouted 字典键和值
【发布时间】:2020-04-27 08:09:49
【问题描述】:

我有一本 Python 字典

original_dict={'body': '{"infra":["dev4","elk"],{"type":"file_integrity"}'}

我希望能够将 original_dict 键和值解析为普通字典,但我现在无法做到这一点,因为“body”键有一个转换为字符串的字典,因此我没有引用它的任何键。所以我应该可以说:

infra=original_dict['body]['infra']

谁能帮我解决这个问题。

【问题讨论】:

  • 使用json.loads 转换值,然后访问其值?
  • json.loads(original_dict['body'])['infra']
  • @cs95:感谢您的帮助,但我无法使其正常工作。这也是我的代码和错误:import json original_dict={'body': '{"infra":[ "dev4","elk"],{"type":"file_integrity"}'} print(json.loads(original_dict['body'])['infra']) 错误:json.decoder.JSONDecodeError:Expecting property name用双引号括起来
  • 那不是有效的 JSON,所以它不起作用。尝试使用真正有效的 JSON 数据。

标签: python json python-3.x dictionary string-parsing


【解决方案1】:

首先,您在 original_dict 中缺少一个花括号。 这是一个将字符串转换为字典的示例。

    import json
    original_dict={'body':'{"infra":["dev4","elk"],"type":"file_integrity"}'}
    original_dict['body'] = json.loads(original_dict['body'])
    infra=original_dict['body']['infra']
    print(infra)

输出:['dev4', 'elk']

【讨论】:

    【解决方案2】:

    你也可以使用 ast:)

    import ast 
    original_dict = {'body': '{"infra":["dev4","elk"],"type":"file_integrity"}'}
    original_dict['body'] = ast.literal_eval(original_dict['body'])
    

    【讨论】:

      猜你喜欢
      • 2013-04-13
      • 2020-03-31
      • 1970-01-01
      • 2023-03-15
      • 2017-08-24
      • 1970-01-01
      • 2013-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多