python基礎day-15:time、hash、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加密的特點
- 同一個資料通過同一個演算法加密得到的結果是一樣的
- 加密後的結果叫密文或摘要
- 加密後的結果不可逆
- 不同大小的資料通過相同演算法生成的摘要長度是一樣的
二、應用場景
- 建立資料不可逆的密文
- 驗證資料的完整性和是否被修改
三、怎麼生成摘要
-
根據加密演算法建立hash物件
hash = hashlib.md5()
常見的hash演算法:
MD5
sha -
確定加密物件
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()
-
生成摘要(生成密文)
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支援的型別,則不能轉換
相關文章
- json基礎JSON
- Python基礎12(模組與datetime模組)Python
- 【json】json基礎知識JSON
- 初探Redis-基礎型別HashRedis型別
- JSON基礎使用詳解JSON
- Pandas 基礎 (17) - to_datetime
- Linux基礎命令---uptimeLinux
- Pandas 基礎 (14) - DatetimeIndex and ResampleIndex
- 返回hash 型別的json型別JSON
- Python基礎篇-Python基礎01Python
- Python零基礎學習筆記(四十)——datetime和CalendarPython筆記
- mutex,latch,lock,enqueue hash chains latch基礎概念MutexENQAI
- python基礎中的基礎Python
- Python基礎筆記01-Python基礎Python筆記
- Flutter基礎-039-json處理FlutterJSON
- 使用Jquery解析Json基礎知識jQueryJSON
- python 基礎Python
- Python 基礎 (-)Python
- python基礎①Python
- python基礎Python
- Python基礎:語法基礎(3)Python
- Python基礎面試題30問!Python基礎教程Python面試題
- JavaSE基礎:System類和Runtime類Java
- 【 js 基礎 】 setTimeout(fn, 0) 的作用JS
- Java基礎-處理json字串解析案例JavaJSON字串
- javaweb-ajax和json基礎知識JavaWebJSON
- Android基礎之json資料解析AndroidJSON
- Json入門--基礎定義及使用JSON
- Oracle分割槽表基礎運維-03HASH分割槽Oracle運維
- Python基礎——模組Python
- Python列表基礎Python
- 【Python基礎】字典Python
- Python_基礎Python
- python基礎(五)Python
- python基礎(一)Python
- python基礎題Python
- 03 - Python 基礎Python
- Python基礎—字串Python字串