Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中创建迭代json文件?_Python_Json_Python 2.7 - Fatal编程技术网

在python中创建迭代json文件?

在python中创建迭代json文件?,python,json,python-2.7,Python,Json,Python 2.7,目前我正在使用: import json jsonlist = ["data", "test", "row", "blah", "boo"] with open('test.txt', "wb") as jsfile: jsfile.write(json.dumps(jsonlist)) 我当前的输出是: ["data", "test", "row", "blah", "boo"] 理想化我想要一个迭代的json文件,如下所示:(如果格式正确) 我的实际数据是相当大的html块,这

目前我正在使用:

import json
jsonlist = ["data", "test", "row", "blah", "boo"]

with open('test.txt', "wb") as jsfile:
    jsfile.write(json.dumps(jsonlist))
我当前的输出是:

["data", "test", "row", "blah", "boo"]
理想化我想要一个迭代的json文件,如下所示:(如果格式正确)

我的实际数据是相当大的html块,这只是我如何处理的一个示例…


有人知道我如何做到这一点吗?

很少值得考虑如何将一个JSON表示转换为另一个JSON表示;相反,将一个Python对象转换成另一个,然后用JSON表示

例如,给定以下Python列表:

["data", "test", "row", "blah", "boo"]
…也许你想要这句话:

{1: "data", 2: "test", 3: "row", 4: "blah", 5: "boo"}
…这将使:

'{"1": "data", "2": "test", "3": "row", "4": "blah", "5": "boo"}'
请注意,这些键已转换为字符串。JSON对象的键必须是字符串。如果这不是您想要的,那么您就不需要JSON对象。在这种情况下,您可能需要一个对列表,它将变成JSON数组的JSON数组(因为数组可以将数字作为值)

可以将列表转换为
(索引,值)
对列表,并且可以将
(键,值)
对列表转换为dict:

jsonlist = ["data", "test", "row", "blah", "boo"]
jsondict = dict(enumerate(jsonlist, 1))
with open('test.txt', "wb") as jsfile:
    jsfile.write(json.dumps(jsondict))
或者,如果您只需要一个数组数组,请在
枚举
处停止。由于
enumerate
实际上为您提供了值的迭代器,而不是序列,因此您必须将其包装在
列表中

jsonlist = ["data", "test", "row", "blah", "boo"]
jsonpairs = list(enumerate(jsonlist, 1))
with open('test.txt', "wb") as jsfile:
    jsfile.write(json.dumps(jsonpairs))

请注意,由于Python使用基于0的索引,我必须将
start
参数传递到
enumerate
以从1开始计数,而不是从0开始计数。

很少有必要考虑如何将一个JSON表示转换为另一个JSON表示;相反,将一个Python对象转换成另一个,然后用JSON表示

例如,给定以下Python列表:

["data", "test", "row", "blah", "boo"]
…也许你想要这句话:

{1: "data", 2: "test", 3: "row", 4: "blah", 5: "boo"}
…这将使:

'{"1": "data", "2": "test", "3": "row", "4": "blah", "5": "boo"}'
请注意,这些键已转换为字符串。JSON对象的键必须是字符串。如果这不是您想要的,那么您就不需要JSON对象。在这种情况下,您可能需要一个对列表,它将变成JSON数组的JSON数组(因为数组可以将数字作为值)

可以将列表转换为
(索引,值)
对列表,并且可以将
(键,值)
对列表转换为dict:

jsonlist = ["data", "test", "row", "blah", "boo"]
jsondict = dict(enumerate(jsonlist, 1))
with open('test.txt', "wb") as jsfile:
    jsfile.write(json.dumps(jsondict))
或者,如果您只需要一个数组数组,请在
枚举
处停止。由于
enumerate
实际上为您提供了值的迭代器,而不是序列,因此您必须将其包装在
列表中

jsonlist = ["data", "test", "row", "blah", "boo"]
jsonpairs = list(enumerate(jsonlist, 1))
with open('test.txt', "wb") as jsfile:
    jsfile.write(json.dumps(jsonpairs))

请注意,由于Python使用基于0的索引,我必须将
start
参数传递给
enumerate
以从1开始计数,而不是从0开始计数。

这是无效的JSON。你到底想做什么?@DanielRoseman因此我的
如果格式正确
注释,我正在尝试使用项目列表创建一个有效的迭代json文件…你尝试过
缩进
关键字吗
json.dumps(python_对象,缩进=4)
但什么是“迭代json文件”?这是什么意思?它看起来像什么?你会用它做什么?你说的“迭代”到底是什么意思?您是否希望输出一个具有递增数字键的字典?这不是有效的JSON。你到底想做什么?@DanielRoseman因此我的
如果格式正确
注释,我正在尝试使用项目列表创建一个有效的迭代json文件…你尝试过
缩进
关键字吗
json.dumps(python_对象,缩进=4)
但什么是“迭代json文件”?这是什么意思?它看起来像什么?你会用它做什么?你说的“迭代”到底是什么意思?你想输出一个数字键越来越多的字典吗?关于你的第二个版本(使用pairs),我得到一个错误:
TypeError:JSON不是可序列化的吗
他想说的是
list(enumerate(jsonlist,1))
@Robᵩ: 谢谢出于某种原因,我忘记了
enumerate
是2.x中为数不多的3.x风格函数之一,从添加到语言中的那一天起返回一个自定义迭代器。关于第二个版本(使用pairs),我得到了一个错误:
TypeError:JSON不是可序列化的吗
他是说
list(enumerate(jsonlist,1))
@Robᵩ: 谢谢出于某种原因,我忘记了
enumerate
是2.x中为数不多的3.x风格函数之一,它从添加到语言中的那一天起返回一个自定义迭代器。