【问题标题】:Extract list of words from filenames从文件名中提取单词列表
【发布时间】:2019-11-05 02:56:42
【问题描述】:

我需要获取文件包含的单词列表。这是文件:

sub-Dzh_task-FmriPictures_space-MNI152NLin2009cAsym_desc-preproc_bold_mask-Language_sub01_component_ica_s1_.nii
sub-Dzh_task-FmriVernike_space-MNI152NLin2009cAsym_desc-preproc_bold_mask-Language_sub01_component_ica_s1_.nii
sub-Dzh_task-FmriWgWords_space-MNI152NLin2009cAsym_desc-preproc_bold_mask-Language_sub01_component_ica_s1_.nii
sub-Dzh_task-RestingState_space-MNI152NLin2009cAsym_desc-preproc_bold_mask-Language_sub01_component_ica_s1_.nii

我需要在 task-_ 之后得到它,所以我的列表应该如下所示:

['FmriPictures','FmriVernike','FmriWgWords','RestingState']

如何在python3中实现它?

【问题讨论】:

  • 如果文件命名一致的话,会用连字符分割并取第三个字符串吗?
  • 可以使用正则表达式"task-(.*?)_"

标签: python regex list filenames


【解决方案1】:

我只是简单地替换

sub-Dzh_task-

_space-MNI152NLin2009cAsym_desc-preproc_bold_mask-Language_sub01_component_ica_s1_.nii

为空。只需清空这些行,您就会得到文件名。

【讨论】:

    【解决方案2】:
    l=["sub-Dzh_task-FmriPictures_space-MNI152NLin2009cAsym_desc-preproc_bold_mask-Language_sub01_component_ica_s1_.nii",
    "sub-Dzh_task-FmriVernike_space-MNI152NLin2009cAsym_desc-preproc_bold_mask-Language_sub01_component_ica_s1_.nii",
    "sub-Dzh_task-FmriWgWords_space-MNI152NLin2009cAsym_desc-preproc_bold_mask-Language_sub01_component_ica_s1_.nii",
    "sub-Dzh_task-RestingState_space-MNI152NLin2009cAsym_desc-preproc_bold_mask-Language_sub01_component_ica_s1_.nii"]
    
    k=[]
    for i in l:
    
        k.append(i.split('-')[2].replace("_space",""))
    print(k)
    

    这只是方法。

    【讨论】:

      【解决方案3】:

      这是一个使用正则表达式的 Python 解决方案。

      >>> import re
      >>> test_str = 'sub-Dzh_task-FmriPictures_space- 
      MNI152NLin2009cAsym_desc-preproc_bold_mask- 
      Language_sub01_component_ica_s1_.nii'
      >>> re.search('task-(.*?)_', test_str).group(1)
      'FmriPictures'
      

      我认为你可以对每个字符串做同样的事情。

      【讨论】:

        【解决方案4】:

        您可以遍历您的列表并使用regex 从字符串中获取名称,如下例所示:

        import re
        
        a = ['sub-Dzh_task-FmriPictures_space-MNI152NLin2009cAsym_desc-preproc_bold_mask-Language_sub01_component_ica_s1_.nii',
         'sub-Dzh_task-FmriVernike_space-MNI152NLin2009cAsym_desc-preproc_bold_mask-Language_sub01_component_ica_s1_.nii',
         'sub-Dzh_task-FmriWgWords_space-MNI152NLin2009cAsym_desc-preproc_bold_mask-Language_sub01_component_ica_s1_.nii',
         'sub-Dzh_task-RestingState_space-MNI152NLin2009cAsym_desc-preproc_bold_mask-Language_sub01_component_ica_s1_.nii']
        
        out = []
        for elm in a:
            condition = re.search(r'_task-(.*?)_', elm)
            if bool(condition):
                out.append(condition.group(1))
        
        print(out)
        

        输出:

        ['FmriPictures', 'FmriVernike', 'FmriWgWords', 'RestingState']
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-10-06
          • 1970-01-01
          • 2021-06-30
          • 1970-01-01
          • 2013-11-06
          • 1970-01-01
          相关资源
          最近更新 更多