将文件列表循环到字典中;基于字符串
Loop over file list into dictionary; based on string
我在库中有一堆 .csv 文件,我想提取它们的内容(它们是 NxM 矩阵)并将它们放入字典中。它们的大小都相同,并且统称为 {means1, means2, ...} 和 {trajectories1, trajectories2, ...}。
这是我用来获取文件列表的代码
import os
import glob
my_dir = 'insert your own datapath'
filelist = []
os.chdir( my_dir )
for files in glob.glob( "*.csv" ) :
filelist.append(files)
输出
['means0.csv',
'means1.csv',
'means2.csv',
'trajectories0.csv',
'trajectories1.csv',
'trajectories2.csv']
我正在寻找一些代码
- 提取姓名;在这种情况下 "means" 和 "trajectories"
- 根据每个名字创建一个字典,即
means_dict = {}
- 用相关的 .csv 文件填写字典。例如。以
means_dict['0'] = ('means0.csv')
等结尾。
希望它有意义!
你真的、真的不想动态创建字典。相反,使用包含键为 "means"、"trajectories" 等的包含字典,并将值作为文件列表:
from collections import defaultdict
import re
filedict = defaultdict(list)
for filename in glob.glob( "*.csv" ) :
result = re.match(r'([^\d]+)', filename)
if result:
filedict[result.group(1)].append(filename)
你可以用这样的动态字典来做到这一点:
import os
import glob
import re
my_dir = 'whatever dir'
special_filelist = dict()
filelist = []
os.chdir( my_dir )
for files in glob.glob( "*.csv" ) :
filelist.append(files)
fileListName = re.match(r'(.*)[0-9]', files).group(1)
if (fileListName not in special_filelist):
special_filelist[fileListName] = []
special_filelist[fileListName].append(files)
print special_filelist
在我自己的测试中给出了这个结果:
{'test': ['test2.csv', 'test0.csv', 'test1.csv'], 'else': ['else0.csv', 'else1.csv']}
我在库中有一堆 .csv 文件,我想提取它们的内容(它们是 NxM 矩阵)并将它们放入字典中。它们的大小都相同,并且统称为 {means1, means2, ...} 和 {trajectories1, trajectories2, ...}。
这是我用来获取文件列表的代码
import os
import glob
my_dir = 'insert your own datapath'
filelist = []
os.chdir( my_dir )
for files in glob.glob( "*.csv" ) :
filelist.append(files)
输出
['means0.csv',
'means1.csv',
'means2.csv',
'trajectories0.csv',
'trajectories1.csv',
'trajectories2.csv']
我正在寻找一些代码
- 提取姓名;在这种情况下 "means" 和 "trajectories"
- 根据每个名字创建一个字典,即
means_dict = {}
- 用相关的 .csv 文件填写字典。例如。以
means_dict['0'] = ('means0.csv')
等结尾。
希望它有意义!
你真的、真的不想动态创建字典。相反,使用包含键为 "means"、"trajectories" 等的包含字典,并将值作为文件列表:
from collections import defaultdict
import re
filedict = defaultdict(list)
for filename in glob.glob( "*.csv" ) :
result = re.match(r'([^\d]+)', filename)
if result:
filedict[result.group(1)].append(filename)
你可以用这样的动态字典来做到这一点:
import os
import glob
import re
my_dir = 'whatever dir'
special_filelist = dict()
filelist = []
os.chdir( my_dir )
for files in glob.glob( "*.csv" ) :
filelist.append(files)
fileListName = re.match(r'(.*)[0-9]', files).group(1)
if (fileListName not in special_filelist):
special_filelist[fileListName] = []
special_filelist[fileListName].append(files)
print special_filelist
在我自己的测试中给出了这个结果:
{'test': ['test2.csv', 'test0.csv', 'test1.csv'], 'else': ['else0.csv', 'else1.csv']}