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: 可以使用 Python 内置的 `json` 模块来实现。 首先,你需要导入 `json` 模块: ``` import json ``` 然后,你可以使用 `json.dumps()` 函数将字典换为 JSON 字符串: ``` data = { "name": "John", "age": 30, "city": "New York" } json_str = json.dumps(data, ensure_ascii=False) print(json_str) ``` 输出结果: ``` {"name": "John", "age": 30, "city": "New York"} ``` `json.dumps()` 函数的第二个参数 `ensure_ascii` 用于控制是否以 ASCII 编码输出,如果设置为 `False`,则可以输出中文字符。 ### 回答2: Python中可以使用内置的json模块将字典格式化为JSON字符串。 首先,导入json模块: ```python import json ``` 然后,定义一个字典对象: ```python data = {'name': 'Alice', 'age': 25, 'city': 'New York'} ``` 接下来,使用json.dumps()方法将字典对象化为JSON字符串: ```python json_string = json.dumps(data) ``` 最后,可以打印输出JSON字符串: ```python print(json_string) ``` 以上代码将输出如下结果: ```python {"name": "Alice", "age": 25, "city": "New York"} ``` 另外,如果想要保留缩进或排序,可以在调用dumps()方法时传入额外的参数。例如,将缩进设置为4个空格: ```python json_string = json.dumps(data, indent=4) ``` 或者按照字母顺序排序键: ```python json_string = json.dumps(data, sort_keys=True) ``` 这样可以得到带有缩进或排序的JSON字符串。 需要注意的是,如果字典中的值包含了不支持JSON序列化的类型(如函数、类等),则会引发TypeError异常。 ### 回答3: 在Python中,可以使用内置的`json`模块将字典对象换为JSON格式的字符串。使用`json.dumps()`方法可以将字典换为JSON字符串。 下面是一个示例代码: ```python import json # 创建一个字典对象 person = { "name": "张三", "age": 25, "city": "北京" } # 将字典换为JSON字符串 json_str = json.dumps(person) # 输出JSON字符串 print(json_str) ``` 运行代码后,将会输出以下内容: ```json {"name": "\u5f20\u4e09", "age": 25, "city": "\u5317\u4eac"} ``` 在输出结果中,你会看到字典的键和值已经被换为相应的JSON格式。如果希望输出时中文字符正常显示,可以添加`ensure_ascii=False`参数,例如`json_str = json.dumps(person, ensure_ascii=False)`。 需要注意的是,如果字典中包含不支持JSON序列化的数据类型,如`datetime`对象,换过程将会出错。在这种情况下,可以使用自定义的处理函数或类扩展`JSONEncoder`类来序列化这些特殊对象。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值