对json数据进行特定筛选、去重、写入、去空

原始数据格式
在这里插入图片描述
目标:筛选出该数据格式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、最终得到的数据即为即没有空值,格式也正确的数值
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值