基于Python实现JSON文件指定键值比对及结果导出需求
解决方案
实现思路
要满足需求,我们需要:
- 读取JSON文件并加载为结构化数据
- 针对指定的5个字段(From、To、Source、Destination、Service),找出所有在任意字段上存在重复值的条目
- 输出符合条件的ID,并将完整条目导出为CSV文件
核心逻辑:对每个目标字段标记出所有值重复出现的行(包括首次出现的行),合并这些标记后,保留至少在一个字段上有重复的所有条目。
完整代码
import pandas as pd # 读取JSON数据 data = pd.read_json('file.json') # 指定需要比对的字段 target_columns = ["From", "To", "Source", "Destination", "Service"] # 构建每个字段的重复值标记掩码 mask_list = [] for col in target_columns: # keep=False 标记所有重复出现的行(含第一次出现的) mask = data[col].duplicated(keep=False) mask_list.append(mask) # 合并掩码:只要任意一个字段有重复,就保留该行 final_mask = pd.Series([False] * len(data)) for mask in mask_list: final_mask = final_mask | mask # 筛选符合条件的数据并按ID排序 matching_entries = data[final_mask].sort_values("ID") # 输出符合条件的ID print("符合条件的ID列表:") print(matching_entries["ID"].tolist()) # 导出到CSV文件(无索引,UTF-8编码) matching_entries.to_csv('matching_rules.csv', index=False, encoding='utf-8') print("已将符合条件的条目导出到 matching_rules.csv")
代码说明
duplicated(keep=False):标记所有值重复出现的行,确保首次出现的重复值条目也被纳入结果- 掩码合并:通过逻辑或(
|)操作,将所有字段的重复标记合并,覆盖「全字段相同」和「至少一个字段相同」两种场景 - CSV导出:
index=False避免写入额外索引列,encoding='utf-8'保证特殊字符正常显示
测试结果(针对示例数据)
运行代码后,输出的ID列表为 ['1', '6'],对应的条目会被导出到matching_rules.csv文件中,完全匹配需求中ID1和6的判定逻辑。
内容的提问来源于stack exchange,提问作者Lilou
相关产品推荐
相关产品推荐

