Python 字符串,字典,數據庫,列表和json互相轉化

最近用Django搭建後臺,用到比較多的Python和HTML,其中比較麻煩的是數據類型轉換,在此記下來,方便下次查找。

數據庫轉json

def changeJson(data):
    jsonDt = []
    for row in data:
        result = {}
        result['id'] = row[0]
        result['name'] = row[1]
        result['prop'] = row[2]
        result['plat'] = row[3]
        result['status'] = row[4]
        result['reserve'] = row[5]
        result['reserve2'] = row[6]
        jsonDt.append(result)
    return json.dumps(jsonDt)

字符串和字典相互轉化

字符串轉字典

str_S = "{'3rd_NewsArticle':'預裝','3rd_WeiBo':'內置'}"
print eval(str_S)

細心的朋友會發現輸出爲{‘3rd_NewsArticle’: ‘\xe9\xa2\x84\xe8\xa3\x85’, ‘3rd_WeiBo’: ‘\xe5\x86\x85\xe7\xbd\xae’},沒錯,編碼也是utf-8,只是作爲ascii碼輸出了,如果想輸出中文的字典用如下方式。
字典轉字符串
有兩種方式
直接在字典前面加str,強制轉化,但對於一些有中文的且爲ascii碼輸出的如上所示,建議用下面的方式,可以輸出中文。下面的這中方式起其實是把字典轉化爲json,json是具有特殊格式的字符串。

dic = {'3rd_AMap': '\xe9\xa2\x84\xe8\xa3\x85', '3rd_NewsArticle': '\xe5\x86\x85\xe7\xbd\xae'}
print json.dumps(dic,encoding='utf-8',ensure_ascii=False)

輸出結果爲:{“3rd_AMap”: “預裝”, “3rd_NewsArticle”: “內置”}

列表轉化爲字典或json

def convertBranch(data):
    jsondt = []
    jsondic = {}
    for index in range(len(data)):
        jsondt.append(index)
    jsondic = dict(zip(jsondt, data))
    return json.dumps(jsondic)

字典的賦值,循環和刪除

dict1 = {'Model':'Apple','Name':'6s'}
dict2 = {'ro.product.model':'Nokia','Name':'3310'}
#將dict1的Model值賦給dict2的ro.product.model
dict2['ro.product.model'] = dict1['Model']
print dict2
#輸出爲{'ro.product.model':'Nokia','Name':'3310'}
#字典循環
for a in dict2:
    #刪除字典中的元素
    if dict1.has(a):
        dict1.pop(a)
print dict1
#輸出爲 {'Model':'Apple'}
發佈了101 篇原創文章 · 獲贊 25 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章