【问题标题】:handle json key value(which is again dict) to a list, xlsxwriter is not accepting dict将 json 键值(又是 dict)处理到列表中,xlsxwriter 不接受 dict
【发布时间】:2020-10-22 11:25:07
【问题描述】:

我有一种情况,json 键值有一个字典。 以前我只有一个字符串或整数或浮点数作为键值。 我可以使用 Python 将所有值放入列表并使用 xlsxwriter 模块填充到 excel 中:

names = list(data['items'][]['variants'].values())

现在我的 json 键值有 dict:

"foobar": {
    "agents": {
        "scenario": {
            "capacity": {
                "add": [
                    "sample"
                ],
                "signal": [
                    "all"
                ]
            },
            "eligibility": true,
            "read": false,
            "runAsUser": 0
        }
    },

因此,我的脚本抛出以下错误:

Traceback (most recent call last):
  File "/root/virtualenvs/lib/python3.7/site-packages/xlsxwriter/worksheet.py", line 493, in _write
    f = float(token)
TypeError: float() argument must be a string or a number, not 'dict'
..............
.......................
.......................
    raise TypeError("Unsupported type %s in write()" % type(token))
TypeError: Unsupported type <class 'dict'> in write()

有什么办法可以处理这种情况。 我的目标是捕获该 dict 并将其放入列表中并填充到 excel 中。

【问题讨论】:

  • 您只需要遍历字典并逐个单元格地写入您想要的数据。 XlsxWriter docs 中有一个更简单的 dict 结构的示例。但是,您在上面显示的结构有 5 个级别的数据,因此您需要考虑一下如何在 Excel 的 2D 工作表上显示它。
  • 感谢您的快速回复@jmcnamara ..........第二级对我来说是关键,下面的结构的其余部分是价值。我希望整个值成为列表中的一个元素。每个元素都应该填充到excel中的单元格中
  • 最好使用 Excel 中的屏幕截图更新您的问题,了解您希望它的外观。这样会更容易回答。

标签: json python-3.x xlsxwriter


【解决方案1】:

终于用地图解决了问题:

names = list(map(json.dumps, data['items'][varients]['names'].values()))

【讨论】:

    猜你喜欢
    • 2017-09-20
    • 2016-04-08
    • 2022-11-17
    • 2015-04-12
    • 2017-05-18
    • 2020-02-25
    • 2019-04-06
    • 2022-06-17
    • 1970-01-01
    相关资源
    最近更新 更多