zbparse/flask_app/main/JSON内容提取.py

59 lines
1.9 KiB
Python
Raw Normal View History

2024-08-29 16:37:09 +08:00
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文件已按要求重新编号并保存.")