我正在尝试按月顺序保存我的 csv 文件,例如 may、jun 等,并尝试使用 python 更改顺序,但无法做到这一点



我试图按照每月的顺序保存我的csv文件,如may、jun等,并试图用python更改顺序,但无法做到这一点

我的csv文件名是jun01.csv、jun02.csv、jun03.csv、may03.csv和may04.csv

代码低于

import collections
import os
path = r'Stocks'
all_files = os.listdir(path)
filenames = []
for filename in all_files:
if filename.endswith(".csv"):
filenames.append(filename)
y = [z[:3] for z in filenames]

def lst(string):
str1 = " "
return str1.join(y)

print(lst(y))
------------------------------
Output is :

jun jun jun jun may may may may may may may may may may may may may may may may may may may may
------------------------------
# Code Continued

def rearrange(seq, order, keyfunc):
if not isinstance(order, collections.Mapping):
order = {v: i for i, v in enumerate(order)}
return sorted(seq, key=lambda x: order[keyfunc(x)])

if __name__ == '__main__':
filenames = lst(y).split()
months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul',
'aug', 'sep', 'oct', 'nov', 'dec']

def get_month_name(filename):
return filename.split(' ')

for filename in rearrange(filenames, months, get_month_name):
print(filename)

它抛出的错误类似于:

File "C:month_sort.py", line 43, in <module>
for filename in rearrange(filenames, months, get_month_name):
File "C:month_sort.py", line 27, in rearrange
return sorted(seq, key=lambda x: order[keyfunc(x)])
File "C:month_sort.py", line 27, in <lambda>
return sorted(seq, key=lambda x: order[keyfunc(x)])
TypeError: unhashable type: 'list'

我不知道这是否是你想要的,但它会根据月份对文件进行排序:

def rearrange(seq, order, keyfunc):
if not isinstance(order, collections.Mapping):
order = {v: i for i, v in enumerate(order)}
return sorted(seq, key=lambda x: order[keyfunc(x)])

if __name__ == '__main__':
months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul',
'aug', 'sep', 'oct', 'nov', 'dec']

def get_month_name(filename):
return filename[:3]
for filename in rearrange(filenames, months, get_month_name):
print(filename)

告诉我你是否希望发生其他事情

get_month_name函数正在返回一个列表。尝试将其更改为:

def get_month_name(filename):
return filename.split(' ')[0]

这应该在代码的其余部分不变的情况下工作。

最新更新