我需要协助按日期和时间对列表进行排序,日期和时间都是我列表中的字符串字段。
myList = ['item1', 'item2', 'mm/dd/yy', 'hh:mmAM', 'item3']
我正在使用Python 2.4.3。
我正在使用Bob Swift CLI从Atlassian的Confluence中提取页面信息并放入列表中,然后可以将其排序为首先显示最旧的页面。
示例数据:
pageList =“['Page Title','383551192','298288254','dt206xxx','1/7/16 1:05 PM','dt206xxx','1/7/16','1 :16PM','2','http://xx.xxx.xx.xx:8xxx/display/mine/PageTitle']“
我需要在元素6的最后修改日期和7的时间排序。
答案 0 :(得分:0)
您需要将数据放在我认为您可能会执行的列表中。我改变了pageList,每个内部列表都有不同的时间。现在我们可以使用python的sort(),但是我们必须提供自己的比较函数。所以这里我们有pageList.sort(mySort)sort()传递两个列表项进行比较。这里的每个项目都是内部列表。我们需要将元素6和7组合在一起形成一个日期时间字符串;然后将其转换为python日期时间,以便我们可以比较它们。
由于元组很长,我只在排序后打印出内部列表中的日期和时间值,以显示它的工作原理。
import datetime
pageList =[['Page Title', '383551192', '298288254', 'dt206xxx', '1/7/16 1:05 PM', 'dt206xxx', '1/7/16', '1:56PM', '2', 'http://xx.xxx.xx.xx:8xxx/display/mine/PageTitle'],
['Page Title', '383551192', '298288254', 'dt206xxx', '1/7/16 1:05 PM', 'dt206xxx', '1/7/16', '1:46PM', '2', 'http://xx.xxx.xx.xx:8xxx/display/mine/PageTitle'],
['Page Title', '383551192', '298288254', 'dt206xxx', '1/7/16 1:05 PM', 'dt206xxx', '1/7/16', '1:56PM', '2', 'http://xx.xxx.xx.xx:8xxx/display/mine/PageTitle'],
['Page Title', '383551192', '298288254', 'dt206xxx', '1/7/16 1:05 PM', 'dt206xxx', '1/7/16', '1:16PM', '2', 'http://xx.xxx.xx.xx:8xxx/display/mine/PageTitle'],
['Page Title', '383551192', '298288254', 'dt206xxx', '1/7/16 1:05 PM', 'dt206xxx', '1/7/16', '1:36PM', '2', 'http://xx.xxx.xx.xx:8xxx/display/mine/PageTitle']]
def mySort(a,b):
c = a[6] + ' ' + a[7]
d = b[6] + ' ' + b[7]
date1 = datetime.datetime.strptime(c, '%m/%d/%y %I:%M%p')
date2 = datetime.datetime.strptime(d, '%m/%d/%y %I:%M%p')
return cmp(date1, date2)
if __name__ == '__main__':
pageList.sort(mySort)
for i in range(len(pageList)):
print i,pageList[i][6],' ',pageList[i][7]
输出:
0 1/7/16 1:16 PM
1 1/7/16 1:36 PM
2 1/7/16 1:46 PM
3 1/7/16 1:56 PM
4 1/7/16 1:56 PM