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'}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值