文章目录

  • 时间模块
    • 一、time
      • 1.1 time.time()
      • 1.2 time.localtime()
      • 1.3 time.strftime(struct_time)
      • 1.4 sleep(sec)
    • 二、datetime
      • 2.1 datetime.time()
      • 2.2 datetime.date
      • 2.3 datetime.datetime
      • 2.4 datetime.timedelta
  • hash摘要
    • 一、hash加密的特点
    • 二、应用场景
    • 三、怎么生成摘要
  • json数据
    • 一、什么是json
    • 二、json支持的数据类型
    • 三、json数据转python
    • 四、python数据转json

时间模块

python和时间相关的模块有两个:time、datetime

一、time

import time

1.1 time.time()

  • 获取当前时间

  • 返回的是时间戳

     时间戳当前时间到1970年1月1日0时0分0秒的时间差格林威治时间单位秒
    
    t1 = time.time()
    print(t1)            # 1608947214.3345132
    print(type(t1))      # <class 'float'>
    print(bin(int(t1)))  # 0b1011111111001101001011000001110
    
  • 使用时间戳保存时间大概4个字节

  • 比使用字符串保存时间所用的内存要少很多

  • 通过时间戳加密时间更简单

1.2 time.localtime()

  • 本地时间

  • 类型为struct_time结构体时间

    t2 = time.localtime()
    print(t2)  # time.struct_time(tm_year=2020, tm_mon=12, tm_mday=26, tm_hour=9, tm_min=48, tm_sec=54, tm_wday=5, tm_yday=361, tm_isdst=0)
    print(type(t2))  # <class 'time.struct_time'>
    print(f'{t2.tm_year}-{t2.tm_mon}-{t2.tm_mday}')  # 2020-12-26
    
  • 将时间戳转换成localtime

    t3 = time.localtime(t1)
    print(t3)
    
    # 练习:
    # 将结构体时间转换成字符串时间
    def struct_str_time(struct_t):return f'{struct_t.tm_year}年{struct_t.tm_mon}月{struct_t.tm_mday}日 ' \f'{struct_t.tm_hour}:{struct_t.tm_min}:{struct_t.tm_sec}'# 将时间戳转换为字符串时间
    def flt_str_time(flt_t):struct_t = time.localtime(flt_t)return struct_str_time(struct_t)print(flt_str_time(t1))
    

1.3 time.strftime(struct_time)

  • 将结构体时间转换成字符串时间

    print(time.strftime('%Y-%m-%d', t2))  # 2020-12-26
    print(time.strftime('%m-%d-%y', t2))  # 12-26-20
    
        %Y  Year with century as a decimal number.%m  Month as a decimal number [01,12].%d  Day of the month as a decimal number [01,31].%H  Hour (24-hour clock) as a decimal number [00,23].%M  Minute as a decimal number [00,59].%S  Second as a decimal number [00,61].%z  Time zone offset from UTC.%a  Locale's abbreviated weekday name.%A  Locale's full weekday name.%b  Locale's abbreviated month name.%B  Locale's full month name.%c  Locale's appropriate date and time representation.%I  Hour (12-hour clock) as a decimal number [01,12].%p  Locale's equivalent of either AM or PM.
    
    # 星期几 上午时:分
    print(t3)
    print(time.strftime('%w %p %I:%M', t3))
    

1.4 sleep(sec)

程序暂定指定时间,单位秒

二、datetime

import datetime

2.1 datetime.time()

print(datetime.time(13, 4, 3, 8))  # 13:04:03.000008

2.2 datetime.date

t1 = datetime.date.today()
print(t1)                 # 2020-12-26
print(t1.year, t1.month)  # 2020 12

2.3 datetime.datetime

t2 = datetime.datetime.now()
t3 = datetime.datetime(20, 12, 31)
print(t2)        # 2020-12-26 11:07:25.721354
print(t3)        # 0020-12-31 00:00:00

2.4 datetime.timedelta

# 时间加减
t4 = t3 + datetime.timedelta(days=365000)
print(t4)  # 1020-05-03 00:00:00

hash摘要

hashlib是python自带的一个专门提供hash加密的模块

import hashlib

一、hash加密的特点

  • 同一个数据通过同一个算法加密得到的结果是一样的
  • 加密后的结果叫密文或摘要
  • 加密后的结果不可逆
  • 不同大小的数据通过相同算法生成的摘要长度是一样的

二、应用场景

  • 创建数据不可逆的密文
  • 验证数据的完整性和是否被修改

三、怎么生成摘要

  1. 根据加密算法创建hash对象

    hash = hashlib.md5()
    

    常见的hash算法:

    MD5
    sha

  2. 确定加密对象

    hash对象.update(数据)

    数据 - 必须是bytes类型

    hash.update(bytes('1234', encoding='utf-8'))
    
    字符串和二进制之间的相互转换
    字符串转二进制:1. bytes(str, encoding='utf-8')2. str.encode()二进制转字符串:1. str(bytes, encoding='utf-8')2. bytes.decode()
    
  3. 生成摘要(生成密文)

    result = hash.hexdigest()
    print(result)
    

json数据

一、什么是json

  • json是一种数据格式
  • 轻量级,不加密
       1. 一个json有且只有一个数据2. 这个数据必须是json支持的数据类型的数据
    

二、json支持的数据类型

    1. 数字:所有的数字,整数、浮点数、正数、负数...,表示的时候直接写;支持科学计数法2. 字符串:双引号引起来的文本数据支持转义字符3. 布尔:true、false两个值表示时直接写4. 数组:相当于列表json支持的类型作为元素5. 字典:相当于字典键只能是字符串,双引号值是json支持类型6. 空值:null

三、json数据转python

在python中

import json

json.loads(json数据的字符串)

  • json数据指json格式的字符串(字符串去掉引号后本就是一个合法的json数据)

    json.loads('True')  # json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)print(type(json.loads('true')))  # <class 'bool'>
    print(type(json.loads('1234')))  # <class 'int'>
    print(type(json.loads('"ab"')))  # <class 'str'>
    
       json    python--------------数字   -  整型、浮点型字符串  -  字符串布尔   -  布尔数组   -  列表字典   - 字典null  - None--------------
    
    # 练习:获取所有国家的名字和对应的死亡人数,并且按照死亡人数从大到小排序
    #       [('中国', 2345), ('韩国', 345),...]file_path = '\pandemic_info.txt'
    with open(rf'{file_path}',  encoding='utf-8') as f:content = f.read()pdmc_info = json.loads(content)
    nations_death = [(nation_info['provinceName'], nation_info['deadCount'])for nation_info in pdmc_info['newslist']]nations_death = sorted(nations_death, key=lambda n_d: n_d[1], reverse=True)
    print(nations_death)
    '''
    [('美国', 330244), ('巴西', 190515), ('印度', 147092), ('墨西哥', 121172), ('意大利', 71359), ('英国', 70195), ('法国', 62427), ('伊朗', 54440), ('俄罗斯', 53659), ('西班牙', 49824), ('阿根廷', 42314), ('哥伦比亚', 41690), ('秘鲁', 37368), ('德国', 29968), ('波兰', 26992), ('南非', 26276), ('印度尼西亚', 20847), ('土耳其', 19371), ('比利时', 19038), ('乌克兰', 17581), ('智利', 16358), ('罗马尼亚', 15023), ('加拿大', 14719), ('厄瓜多尔', 13984), ('伊拉克', 12755), ('荷兰', 10924), ('捷克', 10859), ('巴基斯坦', 9753), ('玻利维亚', 9076), ('菲律宾', 9062), ('匈牙利', 8833), ('瑞典', 8279), ('孟加拉国', 7398), ('埃及', 7309), ('摩洛哥', 7170), ('保加利亚', 7073), ('瑞士', 6561), ('葡萄牙', 6478), ('沙特阿拉伯', 6168), ('奥地利', 5783), ('中国', 4777), ('危地马拉', 4757), ('希腊', 4507), ('突尼斯', 4385), ('塞尔维亚', 4221), ('波黑', 3901), ('巴拿马', 3756), ('约旦', 3711), ('克罗地亚', 3548), ('以色列', 3186), ('日本', 3105), ('洪都拉斯', 3060), ('摩尔多瓦', 2871), ('亚美尼亚', 2733), ('阿尔及利亚', 2716), ('哈萨克斯坦', 2669), ('缅甸', 2552), ('斯洛文尼亚', 2520), ('阿塞拜疆', 2416), ('多米尼加', 2404), ('北马其顿', 2401), ('格鲁吉亚', 2313), ('爱尔兰', 2194), ('巴拉圭', 2154), ('阿富汗', 2135), ('哥斯达黎加', 2086), ('埃塞俄比亚', 1897), ('尼泊尔', 1816), ('斯洛伐克', 1732), ('肯尼亚', 1653), ('黎巴嫩', 1540), ('阿曼', 1491), ('苏丹', 1468), ('波多黎各', 1423), ('利比亚', 1415), ('白俄罗斯', 1367), ('吉尔吉斯斯坦', 1340), ('萨尔瓦多', 1283), ('尼日利亚', 1246), ('立陶宛', 1205), ('丹麦', 1134), ('阿尔巴尼亚', 1134), ('委内瑞拉', 1006), ('科威特', 926), ('澳大利亚', 908), ('韩国', 793), ('阿联酋', 653), ('黑山', 652), ('叙利亚', 652), ('乌兹别克斯坦', 612), ('也门共和国', 607), ('刚果(金)', 573), ('巴勒斯坦', 561), ('芬兰', 524), ('拉脱维亚', 502), ('卢森堡', 461), ('马来西亚', 449), ('喀麦隆', 448), ('挪威', 421), ('库拉索岛', 408), ('安哥拉', 395), ('塞内加尔', 381), ('赞比亚共和国', 381), ('巴林', 351), ('津巴布韦', 339), ('加纳', 333), ('毛里塔尼亚', 301), ('牙买加', 292), ('马达加斯加', 260), ('乌干达', 245), ('卡塔尔', 244), ('马里', 235), ('海地', 235), ('伯利兹', 226), ('马耳他', 203), ('爱沙尼亚', 202), ('纳米比亚', 187), ('马拉维', 187), ('斯里兰卡', 186), ('巴哈马', 169), ('尼加拉瓜', 164), ('圭亚那', 162), ('莫桑比克', 156), ('瓜德罗普岛', 155), ('斯威士兰', 154), ('乌拉圭', 143), ('古巴', 139), ('科特迪瓦', 133), ('索马里', 127), ('特立尼达和多巴哥', 125), ('冈比亚', 123), ('关岛', 121), ('苏里南', 119), ('刚果(布)', 114), ('佛得角', 112), ('法属波利尼西亚', 108), ('塞浦路斯', 107), ('乍得', 102), ('尼日尔', 90), ('塔吉克斯坦', 89), ('赤道几内亚', 85), ('利比里亚', 83), ('安道尔', 83), ('几内亚', 80), ('布基纳法索', 77), ('塞拉利昂', 76), ('法属圭亚那', 71), ('多哥', 68), ('卢旺达', 66), ('吉布提', 65), ('加蓬', 64), ('中非共和国', 63), ('南苏丹', 62), ('泰国', 60), ('圣马力诺', 56), ('马约特', 54), ('莱索托', 51), ('阿鲁巴', 49), ('马尔代夫', 48), ('几内亚比绍', 45), ('贝宁', 44), ('留尼旺', 42), ('马提尼克', 42), ('泽西岛', 41), ('博茨瓦纳', 38), ('越南', 35), ('列支敦士登', 30), ('新加坡', 29), ('冰岛', 28), ('荷属圣马丁', 26), ('新西兰', 25), ('马恩岛', 25), ('美属维尔京群岛', 23), ('塞舌尔', 21), ('坦桑尼亚', 21), ('圣多美和普林西比', 17), ('钻石公主号邮轮', 13), ('根西岛', 13), ('圣马丁岛', 12), ('毛里求斯', 10), ('百慕大', 9), ('巴布亚新几内亚', 9), ('科摩罗', 7), ('巴巴多斯', 7), ('直布罗陀', 6), ('特克斯和凯科斯群岛', 6), ('圣卢西亚', 5), ('安提瓜和巴布达', 5), ('摩纳哥', 3), ('荷兰加勒比地区', 3), ('文莱', 3), ('布隆迪共和国', 2), ('北马里亚纳群岛联邦', 2), ('开曼群岛', 2), ('斐济', 2), ('厄立特里亚', 1), ('英属维尔京群岛', 1), ('蒙特塞拉特', 1), ('蒙古', 0), ('圣巴泰勒米岛', 0), ('圣文森特和格林纳丁斯', 0), ('不丹', 0), ('格林那达', 0), ('法罗群岛', 0), ('梵蒂冈', 0), ('福克兰群岛', 0), ('东帝汶', 0), ('柬埔寨', 0), ('多米尼克', 0), ('新喀里多尼亚', 0), ('安圭拉', 0), ('格陵兰', 0), ('圣其茨和尼维斯', 0), ('老挝', 0), ('圣皮埃尔和密克隆群岛', 0)]
    '''
    

四、python数据转json

json.dumps(python数据)

  • 将python数据转换成json格式的字符串
  • .loads()反过来
       python  json------------int   -  数字float  -  数字布尔    -  布尔字符串  -  字符串,双引号列表   -  数组元组   -  数组字典   -  字典None   -  null------------* 容器中的元素不是json支持的类型,则不能转换
    

python基础day-15:time、hash、json相关推荐

  1. python基础(17)之 JSON

    Python JSON JSON 是一种用于存储和交换数据的语法.JSON 是文本,用 JavaScript 对象表示法编写. Python 有一个名为 的内置包json,可用于处理 JSON 数据. ...

  2. Python基础23_os,sys,序列化,pickle,json

    一. os 模块 所有关于操作系统的内容都在os模块     os.makedirs("d:/1PY/新建文件夹/宝宝")      # 可生成多层递归目录     os.remo ...

  3. Python基础教程:字典和Json

    字典是键/值对构成的集合,字典通过大括号来创建,字典的键是字符串,而值可以是任何数据对象. 字典有两个重要的特征: 字典是无序的,字典项没有特定的顺序,只能通过键来获取值: 字典是可变的,支持原处修改 ...

  4. python基础(15)之 继承

    目录 Python继承 一.创建父类 二.创建子类 三.添加 init() 函数 四.使用 super() 函数 五.添加属性 六.添加方法 Python继承 继承允许我们定义一个从另一个类继承所有方 ...

  5. python 基础 - 4.15 re模块

    请从以下文件里取出所有的手机号 姓名 地区 身高 体重 电话 况咏蜜 北京 171 48 13651054608 王心颜 上海 169 46 13813234424 马纤羽 深圳 173 50 137 ...

  6. 十五. Python基础(15)--内置函数-1

    十五. Python基础(15)--内置函数-1 1 ● eval(), exec(), compile() 执行字符串数据类型的python代码 检测#import os 'import' in c ...

  7. Python基础教程(十三):JSON、练习题100题

    Python JSON 本章节我们将为大家介绍如何使用 Python 语言来编码和解码JSON 对象. 环境配置 在使用 Python 编码或解码 JSON 数据前,我们需要先安装 JSON 模块.本 ...

  8. 【Python基础】不服不行,Python 操作 JSON 的门道也这么多~

    作者:Peter 来源:Python编程时光 在实际工作中,尤其是web数据的传输,我们经常会遇到json数据.它不像常见的文本数据.数值数据那样友好,而且它和Python中的字典类型数据又很相像,给 ...

  9. python json安装_Python JSON - Python 基础教程 - 自强学堂

    Python JSON 本章节我们将为大家介绍如何使用 Python 语言来编码和解码 JSON 对象. Python 2.7 自带 JSON 模块[官方文档] 1. 从python原始类型向json ...

  10. 2018python培训-2018传智播客Python基础班+就业班(15期)

    课程目录 python基础 linux操作系统基础 1-Linux以及命令 2-linux命令以及vim编辑器 python语法基础 1-python基础 2-if.while.for 3-字符串.列 ...

最新文章

  1. HDU3371(最小生成树)
  2. shell中定义变量用双引号和单引号以及不用引号的区别
  3. qbuttongroup如何都不选中_全程马拉松,半程马拉松该如何跑?很多人都不知道这些细节...
  4. 高等数学上-赵立军-北京大学出版社-题解-练习5.2
  5. 走进PV,UV,IP,session
  6. 曲线拟合最小二乘法对数c语言实现,数值计算_第6章曲线拟合的最小二乘法
  7. cmake 学习笔记(四)
  8. 没有 4K 和新处理器,任天堂的新 Switch 为什么还能吸引圈外玩家买单?
  9. dnf电脑服务器不稳定怎么办,Win10玩DNF间歇性卡顿怎么办?Win10系统玩DNF卡顿解决方法(2)...
  10. 优化数据库的八种经典方式
  11. 计算机休眠状态和关,win7系统关于睡眠和休眠这两种状态的区别
  12. 前端面试录音整理(私人版)
  13. 赫尔期权、期货及其他衍生产品第9版课后答案
  14. PCB多层板层的设置原则
  15. matlab ode45的使用
  16. Celery在Django下安装配置
  17. 几何光学学习笔记(1)- 1.1 几何光学的基本概念和定律
  18. 如何获取广告服务流量变现数据,助力广告效果分析?
  19. JAVA大厂面试突击训练(夕颜技术笔记|总结大厂的面试题)
  20. 学习Linux的常见故障(待更新)

热门文章

  1. [Unix下C/C++开发] unix编程书籍推荐
  2. 【python 库】 pandas 教程
  3. 【计算机网络学习笔记】计算机网络
  4. 服务器ping显示不是内部,如何解决ping不是内部或外部命令问题_网站服务器运行维护,ping,内部,外部,命令...
  5. 数学建模三大类模型适用场景及建模方法(纯干货)
  6. Dijkstra最优路径的算法
  7. LINUX内核内存屏障
  8. 射频领域你们如何管理测试夹具的?
  9. 区块链、NFT 与元宇宙中的稀缺性技术
  10. android 读写文件 简书,Android写入txt文件并读取