46 lines
1.6 KiB
Python
46 lines
1.6 KiB
Python
import json
|
||
|
||
def find_ship_info(json_file_path, target_hull):
|
||
"""
|
||
从JSON文件中根据舷号查找舰船信息
|
||
:param json_file_path: JSON文件路径
|
||
:param target_hull: 目标舷号 (字符串或数字)
|
||
:return: 包含 model_name 和 ship_name 的字典,未找到返回 None
|
||
"""
|
||
try:
|
||
# 1. 打开并读取JSON文件
|
||
with open(json_file_path, 'r', encoding='utf-8') as f:
|
||
data = json.load(f)
|
||
|
||
# 2. 遍历列表查找匹配项
|
||
# 注意:这里使用 str() 转换是为了兼容 JSON 中 hull_number 可能是数字(163)或字符串("163")的情况
|
||
for item in data:
|
||
if str(item.get('hull_number')) == str(target_hull):
|
||
return {
|
||
"model_name": item.get('model_name'),
|
||
"ship_name": item.get('ship_name')
|
||
}
|
||
|
||
# 如果遍历结束仍未找到
|
||
return None
|
||
|
||
except FileNotFoundError:
|
||
print(f"错误:找不到文件 {json_file_path}")
|
||
return None
|
||
except json.JSONDecodeError:
|
||
print("错误:JSON 文件格式不正确")
|
||
return None
|
||
|
||
# --- 使用示例 ---
|
||
if __name__ == "__main__":
|
||
file_path = "E:\ZKYNLP\Hjunproject\project0506\kgrag\ship_xinghao.json" # 替换为你的实际文件名
|
||
search_hull = "163" # 你要查询的舷号
|
||
|
||
result = find_ship_info(file_path, search_hull)
|
||
|
||
if result:
|
||
print(f"查询成功!")
|
||
print(f"型号: {result['model_name']}")
|
||
print(f"舰名: {result['ship_name']}")
|
||
else:
|
||
print(f"未找到舷号为 {search_hull} 的记录") |