实习日志(第七周)

三个文件生成一个配置表

问题描述

inventory_stacks.json与inventory_stack_view.json拥有相同的key(id),
在inventory_stacks.json中提取字段”max_amount”的键值对,在inventory_stack_view.json
中根据字段”name”的值匹配csv文件,替换csv中对应的中文名,最后将这些信息按照相同Key(id)
汇总成一个配置表(json文件),运用python脚本实现。

解决思路

将json、csv文件通过转换为字典(dict)提取有效信息,最后再转换为json文件。

python脚本

# !/usr/bin/python
# -*- coding:utf-8 -*-
import json
import csv


# 转换csv文件为字典
def row_csv2dict(csv_file):
    dict_club = {}
    with open(csv_file)as f:
        reader = csv.reader(f, delimiter=',')
        for row in reader:
            dict_club[row[0]] = row[1]
    return dict_club


data = row_csv2dict('lang_ok.csv')
x = data.keys()
y = data.values()
# print data
# 提取inventory_stacks.json文件里的max_amount字段
json1 = file('inventory_stacks.json')
dic_json1 = json.load(json1)
json2 = file('inventory_stack_view.json')
dic_json2 = json.load(json2)
d_temp1 = {}
d_temp2 = {}
d_temp3 = {'max_amount': 1}
for key, value in dic_json1.items():
    if value.get('max_amount') is None:
        d_temp1[key] = d_temp3  # max_amount为None的默认为1
    else:
        d_temp4 = {'max_amount': value.get('max_amount')}
        d_temp1[key] = d_temp4
# 将inventory_stacks.json文件提取出来的信息写入test.json文件中
fp = file('test.json', 'w')
fp.write(json.dumps(
    {key_temp1.encode('utf-8'): value_temp1 for key_temp1, value_temp1 in d_temp1.items()},
    ensure_ascii=False,indent=4))
fp.close()


source1 = file('test.json')
dic_source1 = json.load(source1)
for key2, value2 in dic_json2.items():
    for csv_Key in x:
        if value2.get('name') == csv_Key:
            d_temp5 = {'name': data[csv_Key]}
            d_temp2[key2] = d_temp5
    for key_source1, value_source1 in dic_source1.items():
        if key2 == key_source1:
            d_temp2[key2] = dict(d_temp2[key2], **dic_source1[key_source1])
# 将最终的配置表写入test2.json文件中
fp2 = file('test2.json', 'w')
fp2.write(json.dumps(
    {key_temp2.encode('utf-8'): value_temp2 for key_temp2, value_temp2 in d_temp2.items()},
    ensure_ascii=False,indent=4))
fp2.close()

注意点

因为最后要生成的字典里面存在中文编码问题,不能直接转换为json,
在python的Lib\site-packages文件夹下新建一个sitecustomize.py。内容如下:

# encoding=utf8
import sys

reload(sys)
sys.setdefaultencoding('gbk')

这样pycharm在运行时就会修改默认的编码格式,以识别里面的中文编码,成功生成想要的配置表test2.json。

三个文件百度云连接

http://pan.baidu.com/s/1boUnQJt

你可能感兴趣的:(实习周记)