Python中对比CSV导出字典与JSON并添加匹配Lat属性的实现问询
解决方法
- 建议调整读取逻辑,用Python标准库
json模块读取原始JSON文件保留完整结构,比单纯用pandas处理嵌套字段更灵活,完整实现代码如下:
import pandas as pd import json # 1、读取CSV生成匹配字典 dict_from_csv = pd.read_csv('Iris2.csv', encoding='ISO-8859-1', header=None, index_col=0, squeeze=True).to_dict() # 2、读取原始JSON文件,保留完整条目结构 json_path = r'C:/Users/IT City/Downloads/data.json' with open(json_path, 'r', encoding='utf-8') as f: json_data = json.load(f) # 3、遍历每个条目匹配Lat并写入 for item in json_data: # 提取当前条目的venue_name venue_name = item.get('venue_info', {}).get('venue_name', '') # 匹配CSV字典,匹配到就赋值,没匹配到设为空字符串 if venue_name in dict_from_csv: # 不需要venue_name前缀的话可以直接写 item['Lat'] = dict_from_csv[venue_name] item['Lat'] = f"{venue_name}:{dict_from_csv[venue_name]}" else: item['Lat'] = '' # 4、修改后回写到原JSON文件 with open(json_path, 'w', encoding='utf-8') as f: # ensure_ascii=False避免中文乱码,indent=2保留格式化缩进方便阅读 json.dump(json_data, f, ensure_ascii=False, indent=2)
- 代码说明:
- 全程保留原始JSON的所有字段,仅新增
Lat属性,不会修改原有数据 - 未匹配到的条目会自动添加值为空的
Lat属性,符合需求 - 如果需要把Lat放在
venue_info嵌套结构里,只需要把赋值逻辑改成item['venue_info']['Lat'] = 对应值即可
- 全程保留原始JSON的所有字段,仅新增
内容的提问来源于stack exchange,提问作者micheal
相关产品推荐
相关产品推荐

