原始数据格式
目标:筛选出该数据格式list中每个字典中的sshy和zyyw数据,并赋予label和text关键字
1、遍历json格式数据,并从中取出对应数据
# 全部数据
import json
# com_messag.json 文件路径
json_data = json.load(open("com_messag.json", "r", encoding="utf-8"))
count_list = []
count_dict = {}
class_list = [] # 类别接收list
for count_data in json_data:
# print(count_data)
count_dict["text"] = count_data['zyyw'] # 获取字典中zyyw的值并给与新的关键字text
count_dict["label"] = count_data['sshy'] # 获取字典中sshy的值并给与新的关键字label
count_list.append(count_dict) # 将每一轮循环下的数据加载到count_list中
count_dict = {} # 字典置空,不然会造成重复数据添加
class_list.append(count_data['sshy']) # 单独加载label,做类别处理
# print(count_list) # 打印提取的内容
# print(class_list) # 打印未去重类别
# 剔除重复类别并写入新的list,即去除list中重复的数据
new_class_list = []
for count in class_list:
# print(count)
if count not in new_class_list: # 如果不存在该list中,则加载进去
new_class_list.append(count)
# 换行(便于查看)
# print('\n')
# print(new_class_list) # 打印新的类别
# 打印类别数量
num = len(new_class_list)
print(num)
# 将提取的数据写入到新的文件中
# 由于.write操作写入的是str类型数据,需要对count_list进行强制转换
with open('caibao.json', 'w', encoding='utf-8') as f:
f.write(str(count_list))
2、得到的结果
3、但是得到的数据中,有很多空值,需要剔除
import json
json_data = json.load(open("caibao.json", "r", encoding="utf-8"))
# 取五条数据进行实验
json_data=json_data
# print(json_data)
# 新建null_list接收空值下标
null_list = []
for index, count in enumerate(json_data):
new_text = count['text']
new_label = count['label']
if new_text == '' or new_label == '':
# print(index)
null_list.append(index)
else:
pass
# 打印含有空值的下标
# print(null_list)
# 获取所有数据下标
data_length = len(json_data)
# print(data_length)
# 建立list,长度为data_length=5
data_length_list = list(range(data_length))
# print(data_length_list)
# 在所有的小标list下剔除空值得list
have_data_list = list(set(data_length_list).difference(set(null_list)))
# print(have_data_list)
# 将不为空的值写入到新的文件中
# 新建list用于转储数据
last_new_data = []
last_data = []
for num in have_data_list:
# print(num)
last_new_data = json_data[num]
last_data.append(last_new_data)
last_new_data = []
# print(last_data)
with open("new_data.json", "w", encoding="utf-8") as f:
f.write(str(last_data))
print("写入成功")
4、最终得到的数据即为即没有空值,格式也正确的数值