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