如何将含id与JSON列的CSV数据转换为嵌套Python字典?
解决CSV中JSON字符串转嵌套Python字典的问题
很简单,你只需要对读取到的JSON字符串调用json.loads()进行解析,同时把id列的字符串转换成整数类型,就能得到你想要的嵌套字典结构了。修改后的完整代码如下:
import csv import json with open('data.csv', mode='r') as infile: reader = csv.reader(infile) # 转换id为整数,解析JSON字符串为Python字典 mydict = {int(rows[0]): json.loads(rows[1]) for rows in reader if rows[0] != "id"}
关键修改点说明:
int(rows[0]):CSV读取的id默认是字符串类型,转换成整数后,字典的键就会是你示例里的数值形式(比如-2023284724而非"-2023284724")。json.loads(rows[1]):这个方法会将JSON格式的字符串直接解析为对应的Python嵌套字典结构,替代原来保留的原始字符串,完美实现你需要的嵌套效果。
运行这段代码后,mydict里的每个值都会是解析后的嵌套字典,和你给出的示例效果完全一致。如果你的CSV里存在格式不合法的JSON字符串,可以考虑添加try-except块来捕获解析错误,避免程序崩溃:
import csv import json with open('data.csv', mode='r') as infile: reader = csv.reader(infile) mydict = {} for rows in reader: if rows[0] == "id": continue try: mydict[int(rows[0])] = json.loads(rows[1]) except json.JSONDecodeError as e: print(f"解析id为{rows[0]}的JSON时出错: {e}")
内容的提问来源于stack exchange,提问作者gman1230321
相关产品推荐
相关产品推荐

