import json
from typing import Optional, Dict, List
def format_weather_report2(weather_str: dict) → str:
"""
将天气字典数据格式化为自然语言的天气预报
:param weather_data: 传入的天气数据字典
:return: 格式化后的天气预报文本
"""
# 提取核心信息
city_name = weather_data["city"]
forecasts = weather_data["forecasts"]
# 星期数字转中文映射
week_map = {"1": "一", "2": "二", "3": "三", "4": "四", "5": "五", "6": "六", "7": "日"}
# 构建预报文本
report = [f"{city_name}未来{len(forecasts)}天天气预报"]
for day in forecasts:
date = day["date"]
week = f"周{week_map.get(day['week'], day['week'])}"
day_weather = day["dayweather"]
night_weather = day["nightweather"]
temp_range = f"{day['nighttemp']}℃~{day['daytemp']}℃"
wind = f"{day['daywind']}风{day['daypower']}级"
# 拼接单日预报
if day_weather == night_weather:
single_day = f"{date}({week}):全天{day_weather},气温{temp_range},{wind};"
else:
single_day = f"{date}({week}):白天{day_weather},夜间{night_weather},气温{temp_range},{wind};"
report.append(single_day)
# 补充实时信息
report.append(f"\n【实时气象信息】")
report.append(f"城市:{city_name} ")
# 拼接最终文本
return "\n".join(report)

