Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/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 - Fatal编程技术网

如何使用python将字符串转换为带分隔行的json

如何使用python将字符串转换为带分隔行的json,python,json,Python,Json,我使用的是python,我有一个很大的“outputString”,它由几个输出组成,每个输出位于一个新行上,如下所示: {size:1, title:"Hello", space:0} {size:21, title:"World", space:10} {size:3, title:"Goodbye", space:20} 但是,由于数据太多,我无法在终端中看到所有数据,因此我想编写自动写入json文件的代码。我很难让json保留

我使用的是python,我有一个很大的“outputString”,它由几个输出组成,每个输出位于一个新行上,如下所示:

{size:1, title:"Hello", space:0}
{size:21, title:"World", space:10}
{size:3, title:"Goodbye", space:20}
但是,由于数据太多,我无法在终端中看到所有数据,因此我想编写自动写入json文件的代码。我很难让json保留分隔的行。现在,它只是json文件中的一个大行。我已经附加了一些我尝试过的代码。我还附上了用于将字符串转换为json的代码。非常感谢你

for value in outputList:
    newOutputString = json.dumps(value)
    outputString += (newOutputString + "\n")

with open('data.json', 'w') as outfile:
    for item in outputString.splitlines():
        json.dump(item, outfile)
        json.dump("\n",outfile)

您可以使用以下代码:

json_data = json.loads(outputString)
with open('data.json', 'w') as outfile:
    json.dump(json_data, outfile, indent= 5)

如果输入确实是一个字符串,那么您可能需要确保它的格式正确地设置为json:

outputString='''{“大小”:1,“标题”:“你好”,“空格”:0}
{“大小”:21,“标题”:“世界”,“空间”:10}
{“大小”:3,“标题”:“再见”,“空格”:20}''
然后,您可以使用来操作数据(因此不再是屏幕大小的问题)

将熊猫作为pd导入
导入json
pd.DataFrame([outputString.split('\n')]中的行的json.loads(line)])
其中:

size标题空间
0 1你好0
1 21世界10
再见
另一方面,据我所知,
outputString
不是一个字符串,而是一个字典列表,因此您可以编写一个更简单的版本:

outputString=[{'size':1,'title':“Hello”,'space':0},
{'size':21,'title':'World','space':10},
{'size':3,'title':“再见,'space':20}]
pd.DataFrame(输出字符串)
这和以前一样。使用此数据框架将允许您查询数据,并且它将比JSON更加方便。比如说

>>> df = pd.DataFrame(outputString)
>>> df[df['size'] >= 3]
   size    title  space
1    21    World     10
2     3  Goodbye     20

您也可以尝试(甚至/),因为这可能会让您的生活更轻松。

json.dump的
indent
关键字参数对您有帮助吗?为什么
outputString
是字符串?你是被迫在这里用字符串还是决定用字符串?事实上,我的问题的答案显然是肯定的。。。例如,您可以执行json.dump(item、outfile、indent=4)。但您可能不希望在任何情况下将多个JSON转储写入同一个文件……只要构造一个包含所有内容的对象,并将其作为单个JSON转储转储到文件中(如果需要,可以使用
indent
进行漂亮的打印)。否则,您的输出文件不是有效的JSON。@谢谢!这给了我一个错误,“json.decoder.jsondecoderror:Extra data:line 2 column 1(char 104)”你知道为什么会这样吗?谢谢!但是我希望json的格式与字符串相同,而不是您提到的数据帧。每一行实际上都是一个字典,但我已将其转换为添加到输出字符串中的json。所以outputString是一个转换成json的字典,然后是每个值的新行谢谢!然而,这给了我‘json.decoder.jsondecoderror:Extra data:line 2 column 1(char 104)’你知道为什么会这样吗?请检查没有与“data”同名的变量,这可能是问题所在。