最近用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'}