首页 > 解决方案 > 如何为文件名添加一个字段,该字段填充从解析的 pdf 中提取的每一行数据的文件名?

问题描述

我正在解析目录中的文件并将数据编译成 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) 

标签: pythonparsingappend

解决方案


似乎您上面的代码缺少您写入 csv 文件的部分。DictWriter我通常喜欢使用标准库中的写入 csv 文件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测试一下,看看它是否适合你。 我想说这不是在 python 中写入 csv 文件的首选方式。最简单的方法是使用上面提到的 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)

推荐阅读