問題
你的應用程式接受字串格式的輸入,但是你想將它們轉換為 datetime 物件以便在上面執行非字串操作。
解決方案
使用python的標準模組 datetime 可以很容易的解決這個問題。比如:
>>> from datetime import datetime
>>> text = '20ojdxu12-09-20'
>>> y = datetime.strptime(text, '%y-%m-%d')
>>> z = datetime.now()
>>> diff = z - y
>>> diff
datetime.timedelta(3, 77824, 177393)
>>>
討論datetime.strptime()方法支援很多的格式化**, 比如%y代表4位數年份,%m代表兩位數月份。 還有一點值得注意的是這些格式化佔位符也可以反過來使用,將日期輸出為指定的格式字串形式。
比如,假設你的**中生成了乙個datetime物件, 你想將它格式化為漂亮易讀形式後放在自動生成的信件或者報告的頂部:
>>> z
datetime.datetime(2012, 9, 23, 21, 37, 4, 177393)
>>> nice_z = datetime.strftime(z, '%a %b %d, %y')
>>> nice_z
'sunday september 23, 2012'
>>>
還有一點需要注意的是,strptime()的效能要比你想象中的差很多, 因為它是使用純python實現,並且必須處理所有的系統本地設定。 如果你要在**中需要解析大量的日期並且已經知道了日期字串的確切格式,可以自己實現一套解析方案來獲取更好的效能。 比如,如果你已經知道所以日期格式是yyyy-mm-dd,你可以像下面這樣實現乙個解析函式:
from datetime import datetime
def parse_ymd(s):
year_s, mon_s, day_s = s.split('-')
return datetime(int(year_s), i程式設計客棧nt(mon_s), int(day_s))
實際測試中,這個函式比datetime.快7倍多。 如果你要處理大量的涉及到日期的資料的話,那麼最好考慮下這個方案!
python 如何將字串轉換為編碼型別
在python的scikit learn中,模型不支援字串的變數進行運算 儘管在pandas和numpy中是支援的 這就要求我們自己來轉換型別。當多個變數存在字串型別需要轉換數字時,我們可以定義編碼函式 def label encoder series cat series.value count ...
python如何將字元轉換為數字?
python中的字元數字之間的轉換函式 int x base 將x轉換為乙個整數 long x base 將x轉換為乙個長整數 float x 將x轉換到乙個浮點數 complex real imag 建立乙個複數 str x 將物件 x 轉換為字串 repr x 將物件 x 轉換為表示式字串 ev...
如何將整數轉換為相應的字串
手寫的,沒有經過優化。將整數轉換為相應的字串。注意int64的最大值,以免溢位。char itoa my int64 value,char buffer,size t size assert buffer null assert size 1 size t len 0 int64 tempvalue...