如何使用python将字符串转换为带分隔行的json
我使用的是python,我有一个很大的“outputString”,它由几个输出组成,每个输出位于一个新行上,如下所示:如何使用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保留
{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”同名的变量,这可能是问题所在。