按Python列表中的日期对列表中的元素进行排序
我有如下所有文件名的列表,我需要对它们进行排序并按升序处理。我使用的代码在python3命令行中运行良好,但在pyspark中不起作用。我试过的代码是按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
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']
看起来你在用错误的路径运行它<代码>打印(路径)以确保您获得了正确的文件。似乎您使用了错误的路径运行它<代码>打印(路径)以确保获得正确的文件。