zoukankan      html  css  js  c++  java
  • python基础修改haproxy配置文件

    1.通过eval(),可以将字符串转为字典类型。

    2.Encode过程,是把python对象转换成json对象的一个过程,常用的两个函数是dumps和dump函数。两个函数的唯一区别就是dump把python对象转换成json对象生成一个fp的文件流,而dumps则是生成了一个字符串

    Decode过程,是把json对象转换成python对象的一个过程,常用的两个函数是loads和load函数。区别跟dump和dumps是一样的。

    if __name__ == '__main__':
        # 将python对象test转换json对象
        test = [{"username":"测试","age":16},(2,3),1]
        print type(test)
        python_to_json = json.dumps(test,ensure_ascii=False)
        print python_to_json
        print type(python_to_json)
    
        # 将json对象转换成python对象
        json_to_python = json.loads(python_to_json)
        print json_to_python
        print type(json_to_python)
    

    运行结果如下:

    具体见:https://www.cnblogs.com/loleina/p/5623968.html

    3.在Python中,json数据与dict字典以及对象之间可以相互转化,在Python中自带json库。通过import json导入。

    在json模块有2个方法,

    • loads():将json数据转化成dict数据
    • dumps():将dict数据转化成json数据
    • load():读取json文件数据,转成dict数据
    • dump():将dict数据转化成json数据后写入json文件

    示例:

    dict字典转json数据

    import json
    def dict_to_json():
        dict = {}
        dict['name'] = 'many'
        dict['age'] = 10
        dict['sex'] = 'male'
        print(dict)  # 输出:{'name': 'many', 'age': 10, 'sex': 'male'}
        j = json.dumps(dict)
        print(j)  # 输出:{"name": "many", "age": 10, "sex": "male"}
    if __name__ == '__main__':
        dict_to_json()
    

    对象转json数据

    import json
    def obj_to_json():
        stu = Student('007', '007', 28, 'male', '13000000000', '123@qq.com')
        print(type(stu))  # <class 'json_test.student.Student'>
        stu = stu.__dict__  # 将对象转成dict字典
        print(type(stu))  # <class 'dict'>
        print(stu)  # {'id': '007', 'name': '007', 'age': 28, 'sex': 'male', 'phone': '13000000000', 'email': '123@qq.com'}
        j = json.dumps(obj=stu)
        print(j)  # {"id": "007", "name": "007", "age": 28, "sex": "male", "phone": "13000000000", "email": "123@qq.com"}
    if __name__ == '__main__':
        obj_to_json()
    

    json数据转成dict字典

    import json
    def json_to_dict():
        j = '{"id": "007", "name": "007", "age": 28, "sex": "male", "phone": "13000000000", "email": "123@qq.com"}'
        dict = json.loads(s=j)
        print(dict)  # {'id': '007', 'name': '007', 'age': 28, 'sex': 'male', 'phone': '13000000000', 'email': '123@qq.com'}
    if __name__ == '__main__':
        json_to_dict()
    

    json数据转成对象

    import json
    def json_to_obj():
        j = '{"id": "007", "name": "007", "age": 28, "sex": "male", "phone": "13000000000", "email": "123@qq.com"}'
        dict = json.loads(s=j)
        stu = Student()
        stu.__dict__ = dict
        print('id: ' + stu.id + ' name: ' + stu.name + ' age: ' + str(stu.age) + ' sex: ' + str(
            stu.sex) + ' phone: ' + stu.phone + ' email: ' + stu.email)  # id: 007 name: 007 age: 28 sex: male phone: 13000000000 email: 123@qq.com
    
    if __name__ == '__main__':
        json_to_obj()
    

    json的load()dump()方法的使用

    dump()方法的使用

    import json
    def dict_to_json_write_file():
        dict = {}
        dict['name'] = 'many'
        dict['age'] = 10
        dict['sex'] = 'male'
        print(dict)  # {'name': 'many', 'age': 10, 'sex': 'male'}
        with open('1.json', 'w') as f:
            json.dump(dict, f)  # 会在目录下生成一个1.json的文件,文件内容是dict数据转成的json数据
    
    if __name__ == '__main__':
        dict_to_json_write_file()

    load()方法的使用

    import json
    
    def json_file_to_dict():
        with open('1.json', 'r') as f:
            dict = json.load(fp=f)
            print(dict)  # {'name': 'many', 'age': 10, 'sex': 'male'}
    
    
    if __name__ == '__main__':
        json_file_to_dict()
    

    4.如果执行代用json的程序,报No JSON object could be decode时,解决方法:

    (1)该数据不符合JSON格式,参考格式见:https://jsonlint.com/

    该环境为2.7

    (2)windows系统上写入文件时选择UTF-8格式,将文件另存为无BOM的UTF-8格式就好

    (3) 如果爬取网络数据,服务器返回的数据是经过压缩的,JSON的API无法解析

     确认服务器返回给自己的数据是否经过压缩,判断方法:

    response = urllib2.urlopen(request)
    print response.info().get('Content-Encoding')

    这会打印出服务器返回数据的压缩方式,如果未有压缩则返回None

    若发现数据是经过压缩的,则下面有两种方法解决:

    方法一:在request中加入"Accept-Encoding":"gzip, deflate"表明希望服务器返回压缩过的数据,所以查看自己的代码中是否有包含该语句,若有进行删除即可

    方法二:打印出服务器返回的数据的压缩方式后,用对应的方法进行数据解压后,再用JSON函数进行解析

    案例(采用gzip压缩):

     方法对比:服务器进行数据压缩再返回,可以加快数据的传输速度。

     

      

      

  • 相关阅读:
    Action直接访问Servlet API
    Struts2与Struts1的对比
    参入github上的开源项目的步骤
    TortoiseSVN中图标的含义
    eclipse 快捷键
    base(function strchr)
    1
    Java 关于路径
    java初阶
    关于C++中计时的方法
  • 原文地址:https://www.cnblogs.com/iexperience/p/9022315.html
Copyright © 2011-2022 走看看