從MongoDB里面取得json格式的數據,然后存為本地的json文件,然后再從json讀取變為dict


幫宣傳下彩印網(www.caiyin.com) 有印刷,廣告等等方面的需求就找這個網站吧,沒錯的。

天氣預報在MongoDB中的天氣預報的存儲方式是:

/* 1 */
{
    "_id" : ObjectId("5a72ae6e6bd36a9f61e8ce3d"),
    "city" : "北京",
    "info" : [ 
        {
            "index_of_living" : [ 
                {
                    "assess" : "最弱",
                    "content" : "輻射弱,塗擦SPF8-12防曬護膚品。",
                    "name" : "紫外線指數"
                }, 
                {
                    "assess" : "較易波動",
                    "content" : "血糖較易波動,注意監測。",
                    "name" : "健臻·血糖指數"
                }, 
                {
                    "assess" : "較易發",
                    "content" : "溫差較大,較易感冒,注意防護。",
                    "name" : "感冒指數"
                }, 
                {
                    "assess" : "",
                    "content" : "建議着棉衣加羊毛衫等冬季服裝。",
                    "name" : "穿衣指數"
                }, 
                {
                    "assess" : "較適宜",
                    "content" : "無雨且風力較小,易保持清潔度。",
                    "name" : "洗車指數"
                }, 
                {
                    "assess" : "",
                    "content" : "易感人群應適當減少室外活動。",
                    "name" : "空氣污染擴散指數"
                }
            ],
            "K" : "5℃",
            "weather" : "晴轉多雲轉晴",
            "time" : "1日(今天)",
            "wind" : "<3級轉3-4級",
            "V" : "-7℃"
        }, 
        {
            "index_of_living" : [ 
                {
                    "assess" : "",
                    "content" : "輻射較弱,塗擦SPF12-15、PA+護膚品。",
                    "name" : "紫外線指數"
                }, 
                {
                    "assess" : "易波動",
                    "content" : "氣溫多變,血糖易波動,請注意監測。",
                    "name" : "健臻·血糖指數"
                }, 
                {
                    "assess" : "極易發",
                    "content" : "強降溫,天氣寒冷,極易發生感冒。",
                    "name" : "感冒指數"
                }, 
                {
                    "assess" : "寒冷",
                    "content" : "建議着厚羽絨服等隆冬服裝。",
                    "name" : "穿衣指數"
                }, 
                {
                    "assess" : "較適宜",
                    "content" : "無雨且風力較小,易保持清潔度。",
                    "name" : "洗車指數"
                }, 
                {
                    "assess" : "",
                    "content" : "氣象條件有利於空氣污染物擴散。",
                    "name" : "空氣污染擴散指數"
                }
            ],
            "K" : "-1℃",
            "weather" : "",
            "time" : "2日(明天)",
            "wind" : "3-4級轉<3級",
            "V" : "-9℃"
        }, 
        {
            "index_of_living" : [ 
                {
                    "assess" : "最弱",
                    "content" : "輻射弱,塗擦SPF8-12防曬護膚品。",
                    "name" : "紫外線指數"
                }, 
                {
                    "assess" : "易波動",
                    "content" : "血糖易波動,注意監測。",
                    "name" : "健臻·血糖指數"
                }, 
                {
                    "assess" : "較易發",
                    "content" : "天較涼,增加衣服,注意防護。",
                    "name" : "感冒指數"
                }, 
                {
                    "assess" : "",
                    "content" : "建議着棉衣加羊毛衫等冬季服裝。",
                    "name" : "穿衣指數"
                }, 
                {
                    "assess" : "較適宜",
                    "content" : "無雨且風力較小,易保持清潔度。",
                    "name" : "洗車指數"
                }, 
                {
                    "assess" : "",
                    "content" : "易感人群應適當減少室外活動。",
                    "name" : "空氣污染擴散指數"
                }
            ],
            "K" : "0℃",
            "weather" : "多雲",
            "time" : "3日(后天)",
            "wind" : "<3級",
            "V" : "-9℃"
        }, 
        {
            "index_of_living" : [ 
                {
                    "assess" : "",
                    "content" : "輻射較弱,塗擦SPF12-15、PA+護膚品。",
                    "name" : "紫外線指數"
                }, 
                {
                    "assess" : "易波動",
                    "content" : "血糖易波動,注意監測。",
                    "name" : "健臻·血糖指數"
                }, 
                {
                    "assess" : "較易發",
                    "content" : "天較涼,增加衣服,注意防護。",
                    "name" : "感冒指數"
                }, 
                {
                    "assess" : "",
                    "content" : "建議着棉衣加羊毛衫等冬季服裝。",
                    "name" : "穿衣指數"
                }, 
                {
                    "assess" : "較適宜",
                    "content" : "無雨且風力較小,易保持清潔度。",
                    "name" : "洗車指數"
                }, 
                {
                    "assess" : "",
                    "content" : "易感人群應適當減少室外活動。",
                    "name" : "空氣污染擴散指數"
                }
            ],
            "K" : "1℃",
            "weather" : "",
            "time" : "4日(周日)",
            "wind" : "<3級",
            "V" : "-8℃"
        }, 
        {
            "index_of_living" : [ 
                {
                    "assess" : "",
                    "content" : "輻射較弱,塗擦SPF12-15、PA+護膚品。",
                    "name" : "紫外線指數"
                }, 
                {
                    "assess" : "易波動",
                    "content" : "血糖易波動,注意監測。",
                    "name" : "健臻·血糖指數"
                }, 
                {
                    "assess" : "較易發",
                    "content" : "天較涼,增加衣服,注意防護。",
                    "name" : "感冒指數"
                }, 
                {
                    "assess" : "",
                    "content" : "建議着棉衣加羊毛衫等冬季服裝。",
                    "name" : "穿衣指數"
                }, 
                {
                    "assess" : "較適宜",
                    "content" : "無雨且風力較小,易保持清潔度。",
                    "name" : "洗車指數"
                }, 
                {
                    "assess" : "",
                    "content" : "易感人群應適當減少室外活動。",
                    "name" : "空氣污染擴散指數"
                }
            ],
            "K" : "0℃",
            "weather" : "",
            "time" : "5日(周一)",
            "wind" : "<3級",
            "V" : "-10℃"
        }, 
        {
            "index_of_living" : [ 
                {
                    "assess" : "",
                    "content" : "輻射較弱,塗擦SPF12-15、PA+護膚品。",
                    "name" : "紫外線指數"
                }, 
                {
                    "assess" : "較易波動",
                    "content" : "血糖較易波動,注意監測。",
                    "name" : "健臻·血糖指數"
                }, 
                {
                    "assess" : "較易發",
                    "content" : "天較涼,增加衣服,注意防護。",
                    "name" : "感冒指數"
                }, 
                {
                    "assess" : "",
                    "content" : "建議着棉衣加羊毛衫等冬季服裝。",
                    "name" : "穿衣指數"
                }, 
                {
                    "assess" : "較適宜",
                    "content" : "無雨且風力較小,易保持清潔度。",
                    "name" : "洗車指數"
                }, 
                {
                    "assess" : "",
                    "content" : "易感人群應適當減少室外活動。",
                    "name" : "空氣污染擴散指數"
                }
            ],
            "K" : "2℃",
            "weather" : "",
            "time" : "6日(周二)",
            "wind" : "<3級",
            "V" : "-8℃"
        }, 
        {
            "index_of_living" : [ 
                {
                    "assess" : "",
                    "content" : "輻射較弱,塗擦SPF12-15、PA+護膚品。",
                    "name" : "紫外線指數"
                }, 
                {
                    "assess" : "較易波動",
                    "content" : "血糖較易波動,注意監測。",
                    "name" : "健臻·血糖指數"
                }, 
                {
                    "assess" : "較易發",
                    "content" : "天較涼,增加衣服,注意防護。",
                    "name" : "感冒指數"
                }, 
                {
                    "assess" : "",
                    "content" : "建議着棉衣加羊毛衫等冬季服裝。",
                    "name" : "穿衣指數"
                }, 
                {
                    "assess" : "較適宜",
                    "content" : "無雨且風力較小,易保持清潔度。",
                    "name" : "洗車指數"
                }, 
                {
                    "assess" : "",
                    "content" : "易感人群應適當減少室外活動。",
                    "name" : "空氣污染擴散指數"
                }
            ],
            "K" : "3℃",
            "weather" : "晴轉多雲",
            "time" : "7日(周三)",
            "wind" : "<3級",
            "V" : "-8℃"
        }
    ]
}

就是每個地方的未來的七天的天氣

import json
import pymongo
#建立連接
client = pymongo.MongoClient("mongodb://root:root@IP:端口")
#指定數據庫
db = client['weather']
#指定集合
collection= db['weather_tian']
#指定要查詢的內容
result= collection.find()
print('type result===',type(result))

fp = open('./output_weather.json','a+')
cal_index =0
for i in result:
    cal_index = cal_index +1
    if cal_index == 4:  #先打個三個地區出來看看情況
        break
    #print('type i =',type(i))
    i.pop('_id') #不如這個key和value不去掉的話,會報ObjectId錯誤的問題,因為這個是MongoDB里面的類,json不認識,你的自定定義這個類來處理
    j = json.dumps(i,ensure_ascii=False)
    fp.write(j) 
    fp.write('\n') #這樣每個地區的未來七天的天氣情況就寫為一行了
    
fp.close()

這樣就在本地存了個json文件了。有三個地區的天氣。

  接下來我們是從這個json文件讀入,變成dict,代碼如下

import json
import time

def json_file_to_dict():
    ofile =  open('./output_weather.json')
    for  line in ofile.readlines():
        #print(line)
        print(type(line))
        afterjson = json.loads(line)
        print(afterjson['city']) #其中city是dict中的某個key

if __name__ == '__main__':
    json_file_to_dict()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM