Как добавить поле для имени файла, которое заполняет имя файла для каждой строки данных, извлеченных из проанализированных PDF-файлов? - PullRequest
0 голосов
/ 28 января 2020

Я анализирую файлы из каталога и собираю данные в csv. Я хочу добавить имя файла каждого проанализированного файла в мой вывод, создав столбец с именем «Метка». Ниже мой текущий код, который работает. Мне просто нужно добавить имя файла (метка). Буду признателен за любую помощь.

import sys
import os
from pyresparser import ResumeParser
output = 'EMAIL,SKILLS,'
for filename in os.listdir('/Users/NSam/Documents/resume/directory'):
    output += '\n'
    d = ResumeParser('/Users/NSam/Documents/resume/directory/' + filename).get_extracted_data()
    for key, value in d.items():
        if str(key) == 'email':
            output += str(value) + ','
        if str(key) == 'skills':    
            for skillkey in value:
                output += str(skillkey) + ','
sys.stdout.write(output)
with open('/Users/NSam/Documents/resume/directory/output.csv', 'w') as f:
    print('', output, file=f) 

1 Ответ

0 голосов
/ 28 января 2020

Похоже, что в вашем коде отсутствует та часть, в которой вы пишете в файл csv. Я обычно люблю писать в CSV-файлы, используя DictWriter в стандартной библиотеке csv. Ниже приведен фрагмент кода о том, как это работает.

Протестируйте его и посмотрите, работает ли он для вашего кода.

from csv import DictWriter
from os import listdir

with open('file.csv', 'w') as write_file:
    for fl in listdir():
        dict_writer = DictWriter(write_file,
                                 ['file_name', 'test1', 'test2']
                                 )
        dict_values = {'file_name':fl, 'test1':'Hello2', 'test2':"Hello3"}
        dict_writer.writerow(dict_values)

РЕДАКТИРОВАТЬ На основе приведенного ниже комментария я добавил for fl in listdir('path/to/file'), в котором будут перечислены все файлы и каталоги в path/to/file и поместите их в качестве первого столбца в CSV.

EDIT2 Таким образом, ниже просто скопируйте и вставьте свой код и добавьте то, что, я думаю, добавит имя файла. Это похоже на то, как вы используете output, что вы можете просто добавьте filename к output сразу после добавления новой строки. Проверьте это и посмотрите, работает ли он для вас. Я хотел бы сказать, что это не самый лучший способ записи в CSV-файл в python. Самый простой способ - использовать пакет csv, как указано выше

import sys

import os
from pyresparser import ResumeParser
output = 'EMAIL,SKILLS,'
for filename in os.listdir('/Users/NSam/Documents/resume/directory'):
    output += '\n'
    output += filename + ','
    d = ResumeParser('/Users/NSam/Documents/resume/directory/' + filename).get_extracted_data()
    for key, value in d.items():
        if str(key) == 'email':
            output += str(value) + ','
        if str(key) == 'skills':    
            for skillkey in value:
                output += str(skillkey) + ','
sys.stdout.write(output)
with open('/Users/NSam/Documents/resume/directory/output.csv', 'w') as f:
    print('', output, file=f)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...