python 批量⽣成json 数据并解决⼩程序导⼊json 数据出错问题
前⾔
powerpoint免费永久激活工具⼩程序云开发数据库提供了从本地导⼊本地json数据的功能,因此当数据量很⼤的时候我们可以在本地⽤python批量⽣成json数据,然后再上传⾄云开发数据库中
⼀、python 数据处理
1.思路
使⽤xlrd读取本地数据,获取需要的数据,⽣成记录列表,最后导⼊到⼀个txt中,最后再将⽣成的txt转成json
为什么不直接⽣成json,额,因为云开发的数据导出时,每⼀条记录就是⼀条单独的json数据,因此导⼊时要保持⼀致
【云开发控制台导出的数据】
批量⽣成数据的python代码:
python是什么专业的课程
代码不多,就30⾏左右
2.⽣成的数据:
编程语言中的powder是求什么import xlrd
filename = '(副本)2021-2022-1物理实验学⽣名单2021.10.8.xlsx'
workbook = xlrd .open_workbook (filename )
sheet1 = workbook .sheets ()[0]
print (ws )
students_exp_data = [] # 学⽣实验数据表
studentInfo = [] # 学⽣信息表
expData = {"_C101": {"data": [], "submitCount": 5.0}, "_C103": {"data": [], "submitCount": 5.0},
"_C203": {"data": [], "submitCount": 5.0}, "_A102": {"data": [], "submitCount": 5.0},
"_A202": {"data": [], "submitCount": 5.0}, "_A204": {"data": [], "submitCount": 5.0},
"_A302": {"data": [], "submitCount": 5.0}, "_A304": {"data": [], "submitCount": 5.0},
"_C301": {"data": [], "submitCount": 5.0}, "_C303": {"data": [], "submitCount": 5.0}}
for i in range (ws ):
if i == 0:
pass
else :
data_lst = w_values (i , start_colx =0, end_colx =None )
temp = {'_id': str (i - 1), 'studentNumber': str (data_lst [5]).split ('.')[0], 'studentName': data_lst [6], "expData": expData }
students_exp_data .append (temp )
print (students_exp_data )
# 将students_exp_data 写⼊到text 中
f = open ("students_", 'w') # 读取 ⽂件,没有则创建,‘a’表⽰再次写⼊时不覆盖之前的内容
for i in students_exp_data :
f .write (str (i ))
f .write ('\n') # 实现换⾏的功能
f .close ()
⽣成的数据可能会有乱码,按编译器的提⽰去修改即可 如果按以上⽅式修改编码之后输出控制出现乱码,则可以按照以下⽅式去修改 (我⽤的编译器是Pycharm)
3.将txt数据转成json
导出时记得选择UTF-8编码
⼆、导⼊到云开发控制台
导⼊到云开发数据库时出错了
报错信息:
导⼊数据库失败, Error: Poll error, 导⼊数据任务(id:1986822)异常,错误信息:invalid JSON input
主要问题:
json数据格式不对
对⽐云开发控制台中导出的数据发现,json数据中的每⼀个字段和字符串应该是英⽂的双引号,⽽不是单引号,这也是json数据的基本格式要求。
于是修改python代码如下:
处理后的json
python请求并解析json数据
数据
处理过后导⼊成功
import json
import xlrd
filename = '(副本)2021-2022-1物理实验学⽣名单2021.10.8.xlsx'
workbook = xlrd .open_workbook (filename )
sheet1 = workbook .sheets ()[0]
print (ws )
students_exp_data = [] # 学⽣实验数据表
studentInfo = [] # 学⽣信息表
expData = {"_C101": {"data": [], "submitCount": 5.0}, "_C103": {"data": [], "submitCount": 5.0},
"_C203": {"data": [], "submitCount": 5.0}, "_A102": {"data": [], "submitCount": 5.0},
"_A202": {"data": [], "submitCount": 5.0}, "_A204": {"data": [], "submitCount": 5.0},
"_A302": {"data": [], "submitCount": 5.0}, "_A304": {"data": [], "submitCount": 5.0},
"_C301": {"data": [], "submitCount": 5.0}, "_C303": {"data": [], "submitCount": 5.0}}
for i in range (ws ):
if i == 0:
pass
else :prototype是哪个阶段
data_lst = w_values (i , start_colx =0, end_colx =None )
temp = {'_id': str (i - 1), 'studentNumber': str (data_lst [5]).split ('.')[0], 'studentName': data_lst [6], "expData": expData }
students_exp_data .append (json .dumps (temp , ensure_ascii =False )) # 这⾥的json.dumps ⽅法中要加⼊ensure_ascii=False ,否则⽣成的txt 中会出现乱码print (students_exp_data )
# 将students_exp_data 写⼊到text 中
f = open ("students_", 'w') # 读取 ⽂件,没有则创建,‘a’表⽰再次写⼊时不覆盖
之前的内容
for i in students_exp_data :
jsp程序设计与项目实训教程f .write (str (i ))
f .write ('\n') # 实现换⾏的功能
f .close ()
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论