Как извлечь определенное имя из имени файла word document в цикле for (в python)? - PullRequest
0 голосов
/ 08 октября 2018

Ниже приведен цикл for, который зацикливает все файлы документов Word.Как вы можете видеть ниже, я уже напечатал имя файла, чтобы увидеть его вывод.

for filename in os.listdir(root_dir):
            source_directory = root_dir + '/' + filename
            # The output of filename is shown in the next section.
           -> print(filename)
            arr = mynotes_extractor.get_mynotes(source_directory)
            list2str = str(arr)
            c = cleanString(newstring=list2str)
            new_arr = []
            new_arr += [c]
            text_file = open(output, 'a', encoding='utf-8')
            for item in new_arr:
                text_file.write("%s\n" % item)

Ниже приведен вывод после печати имени файла:

12345_Cat_A_My Notes.docx
6789_Cat_B_My Notes.docx
54321_Cat_A_My Notes.docx
12234_Cat_C_My Notes.docx
86075_Cat_D_My Notes.docx
34324_Cat_E_My Notes.docx

Я хотел быизвлеките только определенное имя, которое называется «Мои заметки» во всех именах слов word внутри цикла for, как показано выше.

For instance: 
         Before filename of word document extraction: 34324_Cat_E_My Notes.docx
         After filename of word document extraction: My Notes 

1 Ответ

0 голосов
/ 08 октября 2018

Написано в одну строку аккуратно, но может сбивать с толку, когда вы начинаете.

filename.split('.')[0].split('_')[-1]

вывод: 'My Notes'

Подробное объяснение ниже:

filename = '12345_Cat_A_My Notes.docx'

.split('.') разбивает строку в каждом периоде

>>>['12345_Cat_A_My Notes', 'docx']

[0] занимает первый элемент списка

>>>'12345_Cat_A_My Notes'

.split('_') разбивает эту строку при каждом подчеркивании, возвращая

>>>['12345', 'Cat', 'A', 'My Notes']

[-1] Наконец, занимает последний элемент в списке с возвратом

>>>'My Notes'
...