【发布时间】:2018-01-12 23:18:08
【问题描述】:
我正在尝试从 csv 文件创建一个 json 文件。我还想将 csv 文件中的某些字段分组并在 json 文件中将它们组合在一起, 以下是我到目前为止的代码,但我不清楚如何对它们进行分组。
from csv import DictReader
import json
json_input_file="test.csv"
json_output_file="test.json"
# read csv for json conversion
def read_csv(file, json_file):
csv_rows = []
with open(json_input_file) as csvfile:
_reader = csv.DictReader(csvfile)
_title = _reader.fieldnames
for _row in _reader:
csv_rows.extend([{_title[i]:_row[_title[i]] for i in range(len(_title))}])
write_json(csv_rows, json_file)
# write json file
def write_json(data, json_file):
with open(json_file, "w") as F:
F.write(json.dumps(data, sort_keys=False, indent=4, separators=(',', ': '),encoding="utf-8",ensure_ascii=False))
# exec the conversion
read_csv(json_input_file, json_output_file)
我的 csv 文件如下所示:
brand_x, x_type, x_color, brand_y, y_type, y_color
x_code1, type1, green, y_code1, type200, orange
x_code1, type1, red, y_code1, type200, pink
x_code1, type1, black, y_code1, type200, yellow
x_code2, type20, blue, y_code2, type201, blue
x_code2, type20, red, y_code3, type202, black
x_code3, type1, white, y_code3, type202, black
x_code3, type1, blue, y_code3, type202, blue
我尝试对属于品牌和类型的颜色进行分组 例如 将所有属于brand_x的x_code1和x_type的type1的颜色分组,以此类推。
以下是我正在寻找的 json 输出:
[
{
"brand_x": "x_code1",
"brand_y": "y_code1",
"x_type": "type1",
"y_type":"type200",
"x_type1_color": [
{
"x_color": "green"
},
{
"x_color": "red"
},
{
"x_color": "black"
}
],
"y_type200_color":[
{
"y_color":"orange"
},
{
"y_color": "pink"
},
{
"y_color": "yellow"
}
]
}
]
【问题讨论】:
-
简化您的问题。你都尝试了些什么? Python 具有读取 csv 文件和输出 JSON 的库
-
请看看上面我试过的。如果我能得到一些指导,我将不胜感激,这样我就可以尝试构建解决方案。
-
你得到了什么输出?
-
您的 JSON 输出似乎缺少输入 csv 文件中的几项内容,例如
brand_x列中的x_code3和brand_y列下的y_code3。如果没有其中的所有内容,就很难理解您希望如何分组。您发布的代码也存在问题,例如顶部有from csv import DictReader,但随后尝试使用reader = csv.DictReader(csvfile)。如果您希望其他人帮助您,请在您的问题中输入真实代码。 -
对。 JSON 输出似乎不完整。
标签: python