import json def find_keys_by_value(target_value, json_data): matched_keys = [k for k, v in json_data.items() if v == target_value] if not matched_keys: matched_keys = [k for k, v in json_data.items() if isinstance(v, str) and v.startswith(target_value)] return matched_keys def find_keys_with_prefix(key_prefix, json_data): subheadings = [k for k in json_data if k.startswith(key_prefix) and k != key_prefix] return subheadings def extract_json(data, target_values): results = {} for target_value in target_values: matched_keys = find_keys_by_value(target_value, data) for key in matched_keys: key_and_subheadings = {key: data[key]} subheadings = find_keys_with_prefix(key, data) for subkey in subheadings: key_and_subheadings[subkey] = data[subkey] results[target_value] = key_and_subheadings return results def renumber_keys(data, level=1): if isinstance(data, dict): new_dict = {} for key in data: parts = key.split('.') parts[0] = '1' new_key = '.'.join(parts) new_dict[new_key] = renumber_keys(data[key], level + 1) return new_dict else: return data def json_results(extr_json): renumbered_data = {} for key in extr_json: renumbered_data[key] = renumber_keys(extr_json[key]) return renumbered_data if __name__ == "__main__": target_values = ["投标文件"] with open('clause3.json', 'r', encoding='utf-8') as file: data = json.load(file) extracted_data = extract_json(data, target_values) renumbered_data = json_results(extracted_data) with open('output_results1.json', 'w', encoding='utf-8') as file: json.dump(renumbered_data, file, indent=4, ensure_ascii=False) print("JSON文件已按要求重新编号并保存.")