如何从CSV转换后的JSON数据中筛选年龄为22岁或已退休的条目?
筛选CSV转换后的JSON条目:保留年龄为22或已退休的记录
我来帮你搞定这个筛选需求!首先先提一下你原代码里的两个小问题,不然运行起来会出问题:一是没导入csv模块,二是创建的字典d没有添加到列表l里,最后导出的JSON会是空的。接下来是修改后的完整代码,已经加上了筛选逻辑:
import csv import json l = [] with open("acw_user_data.csv", 'r') as data_file: reader = csv.reader(data_file) headers = next(reader) for reader_row in reader: d = {} d[headers[11]] = str(reader_row[11]) d[headers[13]] = str(reader_row[13]) d[headers[3]] = int(reader_row[3]) d[headers[18]] = str(reader_row[18]) d[headers[16]] = bool(reader_row[16]) # 添加筛选条件:年龄等于22 或者 已退休为true if d["Age (Years)"] == 22 or d["Retired"]: l.append(d) # 满足条件才加入列表 # 修正文件名,加上.json后缀更规范 with open("assignment.json", 'w', encoding='utf-8') as jsonf: jsonString = json.dumps(l, indent=4) jsonf.write(jsonString)
代码改动说明:
- 补上了缺失的
import csv语句,否则会触发模块未找到的错误 - 在创建字典
d后,添加了if判断筛选逻辑:只要满足年龄等于22或者Retired为True其中一个条件,就把这条记录加入到最终的列表l中 - 修正了输出文件名为
assignment.json(原代码里的assignemt是拼写错误,加上后缀更符合JSON文件的规范) - 把
d添加到列表l的操作放到了筛选条件内部,确保只有符合要求的记录才会被保留
筛选后的JSON结果:
运行上述代码后,你会得到符合要求的结果:
[ { "First Name": "Jodie", "Last Name": "O'Brien", "Age (Years)": 57, "Sex": "Female", "Retired": true }, { "First Name": "joe", "Last Name": "frank", "Age (Years)": 22, "Sex": "Female", "Retired": true } ]
可以看到,原结果中年龄57且未退休的Leke Dan记录被过滤掉了,剩下的都是符合你要求的条目。
内容的提问来源于stack exchange,提问作者Vandako
相关产品推荐
相关产品推荐

