将python字典转换为MATLAB

将python字典转换为MATLAB,python,regex,matlab,parsing,Python,Regex,Matlab,Parsing,我有一个python字典列表,以这种形式保存了文本文件: TEST BayesianSearch:Fold 1结果:{'AUC':0.023611111111111,“精度”:0.012,“召回”:0.0034607372805101266,“映射”:0.00617361111111111,“NDCG”:0.0038391623341052,“MRR”:0.02447222218,“F1”:0.005372169077405249,“HR”:0.048,“ARHR”:0.024583333333

我有一个python字典列表,以这种形式保存了文本文件:

TEST BayesianSearch:Fold 1结果:{'AUC':0.023611111111111,“精度”:0.012,“召回”:0.0034607372805101266,“映射”:0.00617361111111111,“NDCG”:0.0038391623341052,“MRR”:0.02447222218,“F1”:0.005372169077405249,“HR”:0.048,“ARHR”:0.02458333333333}

TEST BayesianSearch:Fold 2结果:{'AUC':0.0342777775,“精度”:0.016416666666,“回忆”:0.0039397610887163834,“映射”:0.0090208333333329,“NDCG”:0.0052255728175955,“MRR”:0.0358611111111094,“F1”:0.006354527945316768,“HR”:0.0656666666666,“ARHR”:0.037222222222

在MATLAB中

  • 如何找到从
    测试贝叶斯搜索开始的结果:折叠I结果
    ,其中I=1,2,3,4,5
  • 从这些台词中,我怎样才能说出数字

使用支持命名捕获组的Matlab可以很好地完成任务。 在Matlab中使用命名捕获组非常方便,因为当使用正确的关键字
names
时,regexp会自动为您创建一个结构,将命名捕获组作为字段

对于指定了
名称
关键字的字符向量str和正则表达式,文档说明:

如果str和expression都是字符向量或字符串标量,则输出是1×n结构数组,其中n是匹配数。结构字段名称与标记名称相对应

我用于该任务的正则表达式如下所示:

(?:测试。*?(?=\d\)(


正则表达式解释:

  • (?:TEST.*(?=\d\)
    匹配但不捕获测试,并使用正向前瞻将所有内容匹配到第一个数字,该数字后跟一个小数点
  • (?并实现正则表达式

    关键字
    names
    用于返回每个命名令牌的名称和文本

    data = fileread('mytext.txt');
    alldata = regexp(data,"(?:TEST.*?(?=\d\.))(?<AUC>\d*\.\d*)(?:[,\s'a-z:]*)(?<precision>\d*\.\d*)(?:[,\s'a-z:]*)(?<recall>\d*\.\d*)(?:[,\s'a-z:]*)(?<map>\d*\.\d*)(?:[,\s'A-Z:]*)(?<NDCG>\d*\.\d*)(?:[,\s'A-Z:]*)(?<MMR>\d*\.\d*)(?:[,\s'A-Z:]*\d':\s)(?<F1>\d*\.\d*)(?:[,\s'A-Z:]*)(?<HR>\d*\.\d*)(?:[,\s'A-Z:]*)(?<ARHR>\d*\.\d*)",'names')
    
    所有数据(2)

    要访问数据,只需使用点表示法,例如
    alldata(1).AUC

    请注意,对于数值计算,您需要将字段从字符向量转换为双精度。

    这听起来像是一个纯粹的Matlab问题,而不是Python问题,因为您的数据以txt格式保存,您希望在Matlab中加载和分析它们。
    AUC: '0.02361111111111111'
    precision: '0.012'
    recall: '0.0034607372805101266'
    map: '0.006173611111111111'
    NDCG: '0.0038391623343341052'
    MMR: '0.024472222222222218'
    F1: '0.005372169077405249'
    HR: '0.048'
    ARHR: '0.02458333333333333'
    
    AUC: '0.034277777777777775'
    precision: '0.016416666666666666'
    recall: '0.003939761087163834'
    map: '0.009020833333333329'
    NDCG: '0.0052255728628175955'
    MMR: '0.035861111111111094'
    F1: '0.006354527945317168'
    HR: '0.06566666666666666'
    ARHR: '0.0359722222222222'