python笔记

网站:

Python教程 - 廖雪峰的官方网站

Python3 教程 | 菜鸟教程

Generic Operating System Services — Python 3.10.4 documentation

一、JSON处理

python类json序列化

import json
from json import JSONEncoder


# 两个python类

class Employee:
    def __init__(self, name, salary, address):
        self.name = name
        self.salary = salary
        self.address = address

class Address:
    def __init__(self, city, street, pin):
        self.city = city
        self.street = street
        self.pin = pin




address = Address("Alpharetta", "7258 Spring Street", "30004")
employee = Employee("John", 9000, address)

方法一:


     # subclass JSONEncoder       
    class EmployeeEncoder(JSONEncoder):
            def default(self, o):
                return o.__dict__



    
    print(EmployeeEncoder().encode(employee))
    #{"name": "John", "salary": 9000, "address": {"city": "Alpharetta", "street": "7258 Spring Street", "pin": "30004"}}    

    
    employeeJSONData = json.dumps(employee, indent=4, cls=EmployeeEncoder)
    print(employeeJSONData)
    # {"name": "John", "salary": 9000, "address": {"city": "Alpharetta", "street": "7258 Spring Street", "pin": "30004"}}

方法二:

st =  json.dumps(employee,default=lambda x: x.__dict__)
print(st)


# {"name": "John", "salary": 9000, "address": {"city": "Alpharetta", "street": "7258 Spring Street", "pin": "30004"}}

方法三:

import jsonpickle


print(jsonpickle.dumps(employee, unpicklable=False))
#{"name": "John", "salary": 9000, "address": {"city": "Alpharetta", "street": "7258 Spring Street", "pin": "30004"}}

print(jsonpickle.dumps(employee))
#{"py/object": "my_test.MyTest.test_json2.<locals>.Employee", "name": "John", "salary": 9000, "address": {"py/object": "my_test.MyTest.test_json2.<locals>.Address", "city": "Alpharetta", "street": "7258 Spring Street", "pin": "30004"}}

不是所有类都有__dict__属性,例如时间、日期、decimal

时间、日期、decimal 处理

from json import JSONEncoder
import json

class Users(object):
    def __init__(self,id,username,createtime):
        self.id = id
        self.username = username
        self.createtime = createtime







class DBModelsEncoder(JSONEncoder):
    def default(self, obj):
        if  isinstance(obj, (datetime.date, datetime.datetime)):
            return obj.isoformat(' ')
        elif isinstance(obj, decimal.Decimal):
            return float(obj)

        return JSONEncoder.default(self, obj)



a = Users(id=0, username="a",createtime=datetime.now())
print(json.dumps(a, cls=DBModelsEncoder))

#{"id": 0, "username": "a", "createtime": "2022-04-02 16:50:44.146064"}

二、时间

from datetime import datetime,date
        my_datetime = datetime.now()

        print(str(my_datetime))  
        # 2022-04-02 17:04:48.070920

        print(my_datetime.strftime("%Y-%m-%d %H:%M:%S"))
        # 2022-04-02 17:04:48

        print(my_datetime.isoformat(sep=' '))
        # 2022-04-02 17:04:48.070920   sep: 日期与时间之前的间隔,默认 'T'   


        my_date = date.today()

        print(str(my_date))
        # 2022-04-02

        print(my_date.strftime("%Y-%m-%d %H:%M:%S"))
        # 2022-04-02 00:00:00

        print(my_date.isoformat())
        # 2022-04-02

三、decimal

from decimal import Decimal
        d = Decimal(1)
        print(d)
        print(float(d))

# 1
# 1.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值