-1

我在库中有一堆 .csv 文件,我想提取它们的内容(它们是 NxM 矩阵)并将它们放入字典中。它们的大小都相同,通常命名为 {means1, mean2, ...} 和 {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']

我正在寻找一些代码

  1. 提取名称;在这种情况下,“手段”和“轨迹”
  2. 根据每个名称创建一个字典,即means_dict = {}
  3. 用相关的 .csv 文件填充字典。例如,最终得到类似means_dict['0'] = ('means0.csv')ect 的东西。

希望这是有道理的!

4

2 回答 2

2

你真的,真的不想动态创建字典。相反,使用包含键作为“手段”、“轨迹”等的包含字典,并将值作为文件列表:

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)
于 2015-09-15T11:52:56.260 回答
1

您可以使用这样的动态字典来做到这一点:

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']}
于 2015-09-15T11:56:11.763 回答