喵喵程式-民國年輸入與確認
Python版本3.7
需引用time套件,如果是用Anaconda安裝的應該是有內建了,如果發現import有問題,記得安裝 pip install time
台灣人的累的地方,民國年,基本上台灣網頁都有分民國年和西元年二種,在爬蟲的時候會造成問題。
1. 日期計算,有時候我們爬出來的資料可能長這樣1100101,民國110年1月1日,這種基本上不能用計算,同一個月還可以用減的,跨月就會掛掉,而且還有閏年的問題。
2. 輸入的時候,在爬蟲的時候有時候會需要輸入查詢日期,大部分我在寫程式的時候都會作防呆,以防止有人輸錯字、日期錯誤、全半形錯誤、格式錯誤、少輸入字等等......有趣的狀況。
以下示範怎麼設定輸入民國年月日的防呆:
import time
day_f=str(input("請輸入起日 (yyymmdd):"))
while True:
try:
time.strptime(str((int(day_f[0:3])+1911))+day_f[3:],"%Y%m%d")
break
except:
print("日期格式輸入錯誤,請重新輸入。")
day_f=str(input("請輸入起日 (yyymmdd):"))
day_f=str(input("請輸入起日 (yyymmdd):"))
這個是片段,我原始的設計是有day_f和day_l,起日與迄日,day_l寫法一樣,換個字就好,在經驗上看到yyymmdd的台灣人大概就知道是要輸民國年,當然也可以在加上其他字作更多提示。設定輸入字串可以減少後面的問題
while True:
try:
time.strptime(str((int(day_f[0:3])+1911))+day_f[3:],"%Y%m%d")
break
except:
print("日期格式輸入錯誤,請重新輸入。")
day_f=str(input("請輸入起日 (yyymmdd):"))
這裡先從裡面講,day_f[0:3]這裡是作字串的片切 (slice),片切是頭算尾不算,第一個字編號是0。以輸入字元1100101來說,day_f[0:3]可以取出110
str((int(day_f[0:3])+1911)),int(day_f[0:3])因為要運算,所以要換成整數,+1911換成西元年,再轉回字串,才能和後面作連接
time.strptime(............. ,"%Y%m%d"),這邊就是用time套件的字串轉日期功能,"%Y%m%d"轉換時西園日期格是應該是yyyymmdd,不同的格式就要不一樣,例如:yyyy/mm/dd,就要用"%Y/%m/%d"。
整體邏輯就是,先輸入日期,再把日期片切轉成西元,如果發生錯誤就重新輸入。
留言
張貼留言