簡體   English   中英

根據日期和時間對 python 中的字符串進行排序

[英]Sort strings in python based on date and time

我有一個這種格式的字符串列表:

my_strings = [
"10.02.20 time 09.24",  
"06.02.20 time 08.51",  
"10.02.20 time 09.24",  
"10.02.20 time 09.25",  
"10.02.20 time 09.26",  
"10.02.20 time 09.27",  
"10.02.20 time 09.28",  
"10.02.20 time 09.29"   
]

如何根據日期和時間對它們進行正常和反向排序? 我想我應該使用類似的東西:

my_strings.sort(key=lambda date: datetime.strptime(date, "%d-%b-%y"))

但這不起作用。

根據 strptime function 的文檔,對function的正確調用是:

strptime(date, "%d.%m.%y time %H.%M")

您在代碼中輸入的%b是“月份作為語言環境的縮寫名稱(Jan、Feb、...、Dec),但正確的是%m表示“月份作為零填充的十進制數”,您還需要包括time %H.%M在聲明格式的字符串中,否則你會得到一個ValueError: time data '10.02.20 time 09.24' does not match format '%d.%b.%y'

您導入 datetime 模塊的語句可能是import datetime ,嘗試from datetime import datetime 都是代碼

from datetime import datetime

my_strings = [
    "10.02.20 time 09.24",
    "06.02.20 time 08.51",
    "10.02.20 time 09.24",
    "10.02.20 time 09.25",
    "10.02.20 time 09.26",
    "10.02.20 time 09.27",
    "10.02.20 time 09.28",
    "10.02.20 time 09.29"
]
my_strings.sort(key=lambda date: datetime.strptime(date, "%y.%m.%d time %H.%M"))
print(my_strings)

您可以直接使用my_strings.sort()對字符串進行排序,它會起作用。 假設“正常和反向”是指按升序和降序排列,對於后者,您可以使用my_strings[::-1]反轉排序列表,或者直接使用my_strings.sort(reverse=True)排序。

如果要使用字符串解析的日期時間 object 進行值比較,假設您的格式是“日.月.年時間.小時.分鍾”,您需要:

# same result as `my_strings.sort()`
my_strings.sort(key=lambda date: datetime.strptime(date, '%d.%m.%y time %H.%M'))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM