廖雪峯Python教程學習六-常用內建模塊

###正則式
正則式在各個語言下的實現應該是基本相同,Python和Java遵守的規則以及API用法差別都不大。Python的在re模塊下,可以使用re.match(regex, pattern)直接進行一次匹配
或者像Java一樣使用

matcher  = re.compile(r'[regex]')
mathcer.match('pattern')

先編譯再匹配,可以進行多次
Python中的分組,貪婪模式,Java遵守的規則一樣。

###時間日期
時間日期處理的API記錄

#模塊位置
from datetime import datetime 

# 獲取當前時間
now = datetime.now() 
print(now)#格式爲 2018-03-02 16:02:48.800237

# 用指定日期時間創建datetime
dt = datetime(2015, 4, 19, 12, 20, 6)
print(dt)#2015-04-19 12:20:06

#timestamp 從1970.1.1 00:00:00 UTC+00:00 之後的時間,所有不分時區,,是一個浮點數。如果有小數位,小數位表示毫秒數
dt.timestamp() # 把datetime轉換爲timestamp
datetime.fromtimestamp(t) #轉回去,得到的是本地時區的時間
datetime.utcfromtimestamp(t) #得到的是標準(起始)時區的時間

加減以及與字符串轉換

#字符串與時間的相互轉換
datetime.strptime('2015-6-1 18:19:59', '%Y年%m月%d日 %H:%M:%S') #%Y-%m-%d %H:%M:%S 是C和C++規定的轉換標準格式,Java也遵守這個
datetime.now().strftime('%Y年%m月%d日') #字符格式有問題,暫未解決
#time 加減
now + timedelta(hours=10)

時區

#設置時區
tz_utc_8 = timezone(timedelta(hours=8)) # 創建時區UTC+8:00
now.replace(tzinfo=tz_utc_8)
datetime.datetime(2015, 5, 18, 17, 2, 10, 871012, tzinfo=datetime.timezone(datetime.timedelta(0, 28800)))

#時區轉換
# astimezone()將轉換時區爲北京時間:
now.astimezone(timezone(timedelta(hours=8)))

小結
datetime表示的時間需要時區信息才能確定一個特定的時間,否則只能視爲本地時間。

###其他的集合對象
命名元組
Python的命名元組可以方便的用來創建一個點這樣的類,而不用在定義一遍,如下
Point = namedtuple('Point', ['x', 'y'])
又如,一個圓
Circle = namedtuple('Circle', ['x', 'y', 'r'])

雙向鏈表deque
deque是爲了高效實現插入和刪除操作的雙向列表,適合用於隊列和棧

defaultdict
使用dict時,如果引用的Key不存在,就會拋出KeyError。如果希望key不存在時,返回一個默認值,就可以用defaultdict。

OrderedDict
和Java的LinkedHashMap相同,會按照插入的順序排列。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章