Извлечь список слов из имен файлов - PullRequest
1 голос
/ 22 июня 2019

Мне нужно получить список слов, которые содержатся в файлах.Вот файлы:

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

Мне нужно получить, что идет после задачи - <> _, поэтому мой список должен выглядеть так:

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

как я могу реализовать это в python3?

Ответы [ 4 ]

2 голосов
/ 22 июня 2019

Вот решение Python для этого, которое использует Regex.

>>> 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'

Я думаю, вы можете сделать то же самое для каждой строки.

0 голосов
/ 22 июня 2019

Вы можете перебрать свой список и использовать 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']
0 голосов
/ 22 июня 2019
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)

это просто подход.

0 голосов
/ 22 июня 2019

Я бы просто заменил

sub-Dzh_task-

и

_space-MNI152NLin2009cAsym_desc-preproc_bold_mask-Language_sub01_component_ica_s1_.nii

с нулем. Просто очистите эти строки, и вы получите имена файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...