常用內建模組
阿新 • • 發佈:2022-03-29
常用內建模組
re模組補充
""" findall預設是分組優先展示 正則表示式中如果有括號分組 那麼在展示匹配結果的時候 預設只顯示括號內正則表示式匹配到的內容!!! 也可以取消分組優先展示的機制 (?:) 括號前面加問號冒號 """ # import re # res = 'abcabcabcabcabcabcabc' # ret = re.findall('(a)(b)c',res) # 使用括號可以將括號的內容分組進行展示 # print(ret) # >>>[('a', 'b'), ('a', 'b'), ('a', 'b'), ('a', 'b'), ('a', 'b'), ('a', 'b'), ('a', 'b')] # ret1 = re.findall('(?:a)(?:b)(c)',res) # 加了?:就不會優先展示了 # print(ret1) # >>>['c', 'c', 'c', 'c', 'c', 'c', 'c'] # ret = re.search('a(b)c', 'abcabcabcabc') # print(ret.group()) # abc # print(ret.group(0)) # abc # print(ret.group(1)) # b 可以通過索引的方式單獨獲取分組內匹配到的資料 # ret = re.search('a(b)(c)', 'abcabcabcabc') # print(ret.group()) # abc # print(ret.group(0)) # abc # print(ret.group(1)) # b 可以通過索引的方式單獨獲取分組內匹配到的資料 # print(ret.group(2)) # c 可以通過索引的方式單獨獲取分組內匹配到的資料 '''針對search和match有幾個分組 group方法括號內最大就可以寫幾''' # 分組之後還可以給組起別名 # ret = re.search('a(?P<name1>b)(?P<name2>c)', 'abcabcabcabc') # print(ret.group('name1')) # b # print(ret.group('name2')) # c
collocations模組
'''提供了更多資料型別''' # 1. 具名元組 # form collocations import namedtuple # piont = namedtuple('學生','name age gender height weight') # p1 = piont('petter', 18, 'male', 185, 70) # p2 = piont('oscar', 18, 'male', 155, 70) # print(p1.name) # 類似於封裝資料 # print(p2.gender) # >>>petter # >>>male # 2. 雙端佇列 ''' 佇列:先進先出 雙端佇列:兩端都可以進出 ''' # from collections import deque # p = deque([1,2,3]) # print(p) # p.append('append') # 末尾追加資料 # print(p) # p.appendleft('appendleft') # 左側追加資料 # print(p) # p.pop() # 彈出末尾資料 # print(p) # p.popleft() # 左側彈出資料 # print(p) # >>>deque([1, 2, 3]) # >>>deque([1, 2, 3, 'append']) # >>>deque(['appendleft', 1, 2, 3, 'append']) # >>>deque([1, 2, 3, 'append']) # >>>deque([1, 2, 3]) # 3. 字典相關 # 正常的字典內部是無序的,我們所看到的有序是pycharm優化的結果 # 不正常的字典(有序字典) # from collections import OrderedDict # dict1 = OrderedDict([('name','petter'),('age',18),('gender','male')]) # print(dict1) # dict1['height'] = 185 # 新增資料 # print(dict1) # print(dict1.keys()) # 檢視所有key # >>>OrderedDict([('name', 'petter'), ('age', 18), ('gender', 'male')]) # >>>OrderedDict([('name', 'petter'), ('age', 18), ('gender', 'male'), ('height', 185)]) # >>>odict_keys(['name', 'age', 'gender', 'height']) # 資料篩選分類 # from collections import defaultdict # list1 = [1, 5, 8, 9, 3, 4, 2, 6, 7] # dict1 = defaultdict(list) # 新建空字典,每個value都是空列表[] # for i in list1: # if i % 2 == 0: # dict1['單數'].append(i) # else: # dict1['雙數'].append(i) # print(dict1) # >>>defaultdict(<class 'list'>, {'雙數': [1, 5, 9, 3, 7], '單數': [8, 4, 2, 6]}) # 4.計數器 # 統計字串中每個字元出現的次數 # res = 'dahfkjasdfhsaklhfjksdahfkhasdhfkjlah' # from collections import Counter # r = Counter(res) # 統計字元出現次數,組織成字典返回 # print(r) # >>>Counter({'h': 7, 'a': 6, 'f': 5, 'k': 5, 'd': 4, 's': 4, 'j': 3, 'l': 2})
time模組
# 1. 常用方法 1. time.sleep() 程式休眠,括號內寫休眠時長,單位為秒 2. time.time() 獲取當前時間戳 # 2. 三種用於表示時間的格式(彼此間可以轉換) 1. 時間戳time.time() 距離1970年1月1日0時0分0秒之間的秒數差 2. 結構化時間time.localtime() 該時間主要是給計算機看的,人看起來不方便 該方法可以跟一些字尾方法,可以獲取想要的時間,方法見附表 3. 格式化時間time.strftime() 顯示當前時間 該方法可以根據不同引數顯示不同格式時間,引數可以連用,引數見附表 eg: print(time.strftime('%Y-%m-%d %H:%M:%S')) 執行結果: 2022-03-29 17:12:38
字尾名 | 作用 |
---|---|
tm_year | 年 |
tm_mon | 月 |
tm_mday | 日 |
tm_hour | 時 |
tm_min | 分 |
tm_sec | 秒 |
tm_wday | 一週的第幾天(0-6,0表示週一) |
tm_yday | 一年的第幾天 |
tm_isdst | 是否是夏令時(預設為0) |
結構化時間字尾
引數 | 作用 |
---|---|
%y | 兩位數的年份表示(00-99) |
%Y | 四位數的年份表示(000-9999) |
%m | 月份(01-12) |
%d | 月內中的一天(0-31) |
%H | 24小時制小時數(0-23) |
%I | 12小時制小時數(01-12) |
%M | 分鐘數(00=59) |
%S | 秒(00-59) |
%a | 本地簡化星期名稱 |
%A | 本地完整星期名稱 |
%b | 本地簡化的月份名稱 |
%B | 本地完整的月份名稱 |
%c | 本地相應的日期表示和時間表示 |
%j | 年內的一天(001-366) |
%p | 本地A.M.或P.M.的等價符 |
%U | 一年中的星期數(00-53)星期天為星期的開始 |
%w | 星期(0-6),星期天為星期的開始 |
%W | 一年中的星期數(00-53)星期一為星期的開始 |
%x | 本地相應的日期表示 |
%X | 本地相應的時間表示 |
%Z | 當前時區的名稱 |
%% | %號本身 |
格式化時間引數
時間型別轉化
# 時間戳<--->結構化時間
gmtime()時間戳>結構化時間
mktime()結構化時間>時間戳
# 結構化時間<--->格式化時間
strftime() 結構化時間>格式化時間
strptime() 格式化時間>結構化時間
'''ps:UTC時間比我所在的區域時間早八個小時(時區劃分)'''
datetime模組
# 基本操作(取時間)
import datetime
# print(datetime.date.today()) # 2022-03-29
# print(datetime.datetime.today()) # 2022-03-29 17:31:15.470249
"""
date 意思就是年月日
datetime 意思就是年月日 時分秒
ps:後期很多時間相關的操作都是跟date和time有關係
"""
# 時間差
ctime = datetime.datetime.today()
time_tel = datetime.timedelta(days=3) # 設定差值
print(ctime)
print(ctime + time_tel)
執行結果:
2022-03-29 17:55:41.965276
2022-04-01 18:55:41.965276
"""
針對時間計算的公式
日期物件 = 日期物件 +/- timedelta物件
timedelta物件 = 日期物件 +/- 日期物件
"""
random模組
隨機數模組
# 常用方法
# import random
# l1 = [1,2,3,4,5,6,7,8,9]
# print(random.random()) # 產生0-1之間的小數
# print(random.uniform(0,9)) # 產生0-9之間的小數
# print(random.randint(0,9)) # 產生0-9之間的整數
# random.shuffle(l1) # 打亂資料集順序
# print(l1)
# print(random.choice(l1)) # 隨機抽樣
# print(random.sample(l1,3)) # 指定抽樣個數
# >>>0.7754908818200633
# >>>7.940111856951369
# >>>5
# >>>[5, 4, 6, 3, 8, 1, 7, 9, 2]
# >>>4
# >>>[6, 9, 7]