按Python列表中的日期对列表中的元素进行排序

按Python列表中的日期对列表中的元素进行排序,python,list,pyspark,Python,List,Pyspark,我有如下所有文件名的列表,我需要对它们进行排序并按升序处理。我使用的代码在python3命令行中运行良好,但在pyspark中不起作用。我试过的代码是 from datetime import datetime def sorted_paths(paths): paths.sort(key = lambda path: datetime.strptime(path.split('_')[2], '%Y%m%d')) return paths 给出一个错误: Error: tim

我有如下所有文件名的列表,我需要对它们进行排序并按升序处理。我使用的代码在python3命令行中运行良好,但在pyspark中不起作用。我试过的代码是

from datetime import datetime
def sorted_paths(paths):
    paths.sort(key = lambda path: datetime.strptime(path.split('_')[2], '%Y%m%d'))
    return paths
给出一个错误:

Error: time data daily doesn't match the format '%Y%m%d'
输入列表如下:

file_d_20190101_htp.csv
file_d_20180401_html.csv
file_d_20200701_ksh.csv
file_d_20190301_htp.csv
所需输出

file_d_20180401_html.csv
file_d_20190101_htp.csv
file_d_20190301_htp.csv
file_d_20200701_ksh.csv

您可以尝试使用python嵌入函数
sorted
来解决此问题:

import datetime

arr = ['file_d_20190101_htp.csv',
'file_d_20180401_html.csv',
'file_d_20200701_ksh.csv',
'file_d_20190301_htp.csv']


print(sorted(arr, key=lambda x: datetime.datetime.strptime(x.split("_")[2], '%Y%m%d')))

您可以尝试使用python嵌入函数
sorted
来解决此问题:

import datetime

arr = ['file_d_20190101_htp.csv',
'file_d_20180401_html.csv',
'file_d_20200701_ksh.csv',
'file_d_20190301_htp.csv']


print(sorted(arr, key=lambda x: datetime.datetime.strptime(x.split("_")[2], '%Y%m%d')))

只需这样做,既方便又快捷:

paths = ['file_d_20180401_html.csv',
 'file_d_20190301_htp.csv',
 'file_d_20180401_html.csv',
 'file_d_20200701_ksh.csv',
 'file_d_20190101_htp.csv',
]
paths.sort()  # in place sort

只需这样做,既方便又快捷:

paths = ['file_d_20180401_html.csv',
 'file_d_20190301_htp.csv',
 'file_d_20180401_html.csv',
 'file_d_20200701_ksh.csv',
 'file_d_20190101_htp.csv',
]
paths.sort()  # in place sort

单向使用
dateutil.parser

import dateutil.parser as dparser

f = lambda x: dparser.parse(x, fuzzy=True)
sorted(paths, key=f)
输出:

['file_d_20180401_html.csv',
 'file_d_20190101_htp.csv',
 'file_d_20190301_htp.csv',
 'file_d_20200701_ksh.csv']

单向使用
dateutil.parser

import dateutil.parser as dparser

f = lambda x: dparser.parse(x, fuzzy=True)
sorted(paths, key=f)
输出:

['file_d_20180401_html.csv',
 'file_d_20190101_htp.csv',
 'file_d_20190301_htp.csv',
 'file_d_20200701_ksh.csv']

看起来你在用错误的路径运行它<代码>打印(路径)以确保您获得了正确的文件。似乎您使用了错误的路径运行它<代码>打印(路径)以确保获得正确的文件。