继上一次友友问了如何处理 Excel 中的数据之后,这次他又遇到了新问题,让我们一起来看看;
根据 Excel 中的指示,把旧的 json 中的内容改成新的 json 中的内容,那接下来且看博主娓娓道来;
如果对处理 Excel 中的数据感兴趣的小伙伴,可以看看之前的文章:【PY】pandas 处理 Excel 中错别字修正;
因为要对 Excel 中的数据进行读取,首先想到的就是 pandas
的包,那接下来我们将用到这几个来自 pandas
中的函数以及属性:
read_excel()
:读入 Excel 文件;columns
:查看数据表中的列名称;values
:查看数据表中的数值;1、首先,导入 pandas
的包:
import pandas as pd
2、读入相关 Excel 的数据,观察一下大致情况:
data = pd.read_excel("1.xlsx")
data
3、然后看一下列标题:
data.columns
Index(['context', 'role_id', 'resource'], dtype='object')
4、再看看单行的数据值:
data.loc[0].values
按照友友的说法,需要根据 role_id
__,将新 json 中的内容替换到旧 json 中去;
到这里,读入 Excel 就完工了,我们接下来根据 role_id
处理一下 JSON 中的数据就行了;
要处理 JSON 的话,想必要将 JSON 的数据导入,在处理完成之后,还要重新导出,因此,这里将用到 json
包,以及其中的两个函数:
dumps()
:将 Python 对象编码成 JSON 字符串;loads()
:将已编码的 JSON 字符串解码为 Python 对象;两个函数的实例可以参考菜鸟教程,下面将直接使用;
1、获取文件的路径;
这里的话使用到了 os.getcwd()
,即获取到当前文件的位置,
因此,能够写出两个文件夹里的文件的路径了:
old_path = f"{os.getcwd()}/old/{data.loc[0].values[2]}"
new_path = f"{os.getcwd()}/new/{data.loc[0].values[2]}"
2、依次读入文件:
这里就使用 json.loads()
将 JSON 文件加载进来;
with open(old_path, "r") as f:
old_content = json.loads(f.read())
print("old json:\n", old_content)
with open(new_path, "r") as f:
new_content = json.loads(f.read())
print("new json:\n", new_content)
在查取单行数据的时候,发现是 role_id
在12的位置有问题,看一下输出的结果,果真如此:
3、修改旧 JSON 文件的内容;
根据上述,我们只需要将新值覆盖到旧值上就行了:
old_content['对话过程'][data.loc[0].values[1]-1]['text'] = new_content['对话过程'][data.loc[0].values[1]-1]['text']
4、导出 JSON 文件;
这里用到的是 json.dumps()
;
with open(old_path, 'w') as f:
json.dumps(old_content, f, indent=4, ensure_ascii=False)
TIPS
上述已经完成了单次处理 JSON 数据的情况,如何把所有都修改完就是留给友友的思考了;
在 for 循环时需要注意一个问题,那就是需不需要判断是否为同一个 JSON 文件:
如果不进行判断的话,那就一次遍历就要完成读写两个操作,会比较浪费资源,以及相对来说速度较慢;
如果需要进行判断的话,有一种方法就是需要两个指针来进行辅助,伪代码如下:
data = pd.read_excel("1.xlsx")
start = data.loc[0].values[2]
flag = False
for index in data.index:
cur = data.loc[index].values[2]
if start != cur:
with open(..., 'w') as f:
json.dump(content, f, indent=4, ensure_ascii=False)
flag = False
start = cur
if not flag:
with open(..., 'r') as f:
content = json.loads(f.read())
flag = True
...
以上就是 根据 Excel 中的指示修改 JSON 数据 的全部内容了,讲解了如何通过 pandas
包来读入 Excel
,以及如何处理 JSON 数据,结合实际场景,具体问题具体分析,图文并茂,细致的讲解了操作过程以及其中需要注意的细节,希望大家有所收获!
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有