如何在Python中将JSON结构化数据写入文本文件?

时间:2018-11-16 10:24:29

标签: python json python-3.x python-2.7 pandas

我正在尝试将JSON结构化数据写入JSON文件。 js数据帧包含这样的JSON数据:

[{"variable":"Latitude","min":26.845043,"Q1":31.1972475},{"variable":"Longitude","min":-122.315002,"Q1":-116.557795},{"variable":"Zip","min":20910.0,"Q1":32788.5}]

但是当我将其写入文件时,数据的存储方式有所不同。您能帮我将结果存储在dataframe(js)中吗?

"[{\"variable\":\"Latitude\",\"min\":26.845043,\"Q1\":31.1972475},{\"variable\":\"Longitude\",\"min\":-122.315002,\"Q1\":-116.557795},{\"variable\":\"Zip\",\"min\":20910.0,\"Q1\":32788.5}]"

代码:

import csv
import json
import pandas as pd    
df = pd.read_csv(r'C:\Users\spanda031\Downloads\DQ_RESUlT.csv')
js = df.to_json(orient="records")
print(js)

# Read JSON file
with open('C:\\Users\\spanda031\\Downloads\\data.json', 'w') as data_file:
    json.dump(js,data_file)

3 个答案:

答案 0 :(得分:3)

import pandas as pd
import json
df = pd.read_csv("temp.csv")
# it will dump json to file
df.to_json("filename.json", orient="records")

输出为 filename.json

[{"variable":"Latitude","min":26.84505,"Q1":31.19725},{"variable":"Longtitude","min":-122.315,"Q1":-116.558},{"variable":"Zip","min":20910.0,"Q1":32788.5}]

答案 1 :(得分:1)

我认为您正在对数据进行双重编码-df.to_json将数据转换为JSON字符串。然后,您运行json.dump,然后将已经编码的字符串再次编码为JSON-这导致将现有JSON括在引号中,并用反斜杠转义所有内部引号。最后得到JSON-in-- JSON,这不是必需的或不需要的。

您应该使用这些方法中的一种或另一种,但不能同时使用。使用df.to_json来准确地序列化数据帧数据,然后将字符串作为文本直接写到文件中,可能是最简单的方法。

答案 2 :(得分:1)

对话是如此便宜,为什么不让我向您展示代码?

import csv
import json
import pandas as pd    
df = pd.read_csv(r'C:\Users\spanda031\Downloads\DQ_RESUlT.csv')
// where magic happends! :)
js = df.to_dict(orient="records")
print(js)

# Read JSON file
with open('C:\\Users\\spanda031\\Downloads\\data.json', 'w') as data_file:
    json.dump(js,data_file)