从多份简历中提取全部为 PDF 格式的信息
Extracting information from multiple resumes all in PDF format
我有一个数据集,其中有一列有 google 驱动器 link 用于简历,我有 5000 行所以有 5000 links ,我正在尝试提取信息就像这些简历中的多年经验和薪水在 2 个单独的栏中。到目前为止,我已经在 SO 上看到了很多这里提到的例子。
例如:下面提到的代码只能从一个文件中读取数据,如何将其复制到多行?
请帮我解决这个问题,否则我将不得不手动浏览 500 份简历并填写数据
希望我能找到解决这个痛苦问题的方法。
pdf_file = open('sample.pdf', 'rb')
read_pdf = PyPDF2.PdfFileReader(pdf_file)
number_of_pages = read_pdf.getNumPages()
page = read_pdf.getPage(0)
page_content = page.extractText()
print page_content.encode('utf-8')
#to extract salary , experience using regular expressions
import re
prog = re.compile("\s*(Name|name|nick).*")
result = prog.match("Name: Bob Exampleson")
if result:
print result.group(0)
result = prog.match("University: MIT")
if result:
print result.group(0)
使用循环。基本上,您将主要代码放入一个函数中(更易于阅读)并创建一个文件名列表。然后迭代此列表,使用列表中的值作为函数的参数:
注意:我没有检查你的抓取代码,只是展示了如何循环。还有一些更有效的方法可以做到这一点,但我假设你是一个 Python 初学者,所以让我们从简单开始。
# add your imports to the top
import re
# create a list of your filenames
files_list = ['a.pdf', 'b.pdf', 'c.pdf']
for filename in files_list: # iterate over the list
get_data(filename)
# put the rest in a function for readability
def get_data(filename):
pdf_file = open(filename, 'rb')
read_pdf = PyPDF2.PdfFileReader(pdf_file)
number_of_pages = read_pdf.getNumPages()
page = read_pdf.getPage(0)
page_content = page.extractText()
print page_content.encode('utf-8')
prog = re.compile("\s*(Name|name|nick).*")
result = prog.match("Name: Bob Exampleson")
if result:
print result.group(0)
result = prog.match("University: MIT")
if result:
print result.group(0)
那么现在您的下一个问题可能是,如何创建包含 5000 个文件名的列表?这取决于文件的名称和存储位置。如果它们是连续的,你可以这样:
files_list = [] # empty list
num_files = 5000 # total number of files
for i in range(1, num_files+1):
files_list.append(f'myfile-{i}.pdf')
这将创建一个包含 'myfile-1.pdf'、'myfile-2.pdf' 等的列表
希望这足以让您入门。
您还可以在您的函数中使用 return
来创建一个包含您以后可以使用的所有输出的新列表,而不是在您运行时打印输出:
output = []
def doSomething(i):
return i * 2
for i in range(1, 100):
output.append(doSomething(i))
# output is now a list with values like:
# [2, 4, 6, 8, 10, 12, ...]
我有一个数据集,其中有一列有 google 驱动器 link 用于简历,我有 5000 行所以有 5000 links ,我正在尝试提取信息就像这些简历中的多年经验和薪水在 2 个单独的栏中。到目前为止,我已经在 SO 上看到了很多这里提到的例子。
例如:下面提到的代码只能从一个文件中读取数据,如何将其复制到多行?
请帮我解决这个问题,否则我将不得不手动浏览 500 份简历并填写数据
希望我能找到解决这个痛苦问题的方法。
pdf_file = open('sample.pdf', 'rb')
read_pdf = PyPDF2.PdfFileReader(pdf_file)
number_of_pages = read_pdf.getNumPages()
page = read_pdf.getPage(0)
page_content = page.extractText()
print page_content.encode('utf-8')
#to extract salary , experience using regular expressions
import re
prog = re.compile("\s*(Name|name|nick).*")
result = prog.match("Name: Bob Exampleson")
if result:
print result.group(0)
result = prog.match("University: MIT")
if result:
print result.group(0)
使用循环。基本上,您将主要代码放入一个函数中(更易于阅读)并创建一个文件名列表。然后迭代此列表,使用列表中的值作为函数的参数:
注意:我没有检查你的抓取代码,只是展示了如何循环。还有一些更有效的方法可以做到这一点,但我假设你是一个 Python 初学者,所以让我们从简单开始。
# add your imports to the top
import re
# create a list of your filenames
files_list = ['a.pdf', 'b.pdf', 'c.pdf']
for filename in files_list: # iterate over the list
get_data(filename)
# put the rest in a function for readability
def get_data(filename):
pdf_file = open(filename, 'rb')
read_pdf = PyPDF2.PdfFileReader(pdf_file)
number_of_pages = read_pdf.getNumPages()
page = read_pdf.getPage(0)
page_content = page.extractText()
print page_content.encode('utf-8')
prog = re.compile("\s*(Name|name|nick).*")
result = prog.match("Name: Bob Exampleson")
if result:
print result.group(0)
result = prog.match("University: MIT")
if result:
print result.group(0)
那么现在您的下一个问题可能是,如何创建包含 5000 个文件名的列表?这取决于文件的名称和存储位置。如果它们是连续的,你可以这样:
files_list = [] # empty list
num_files = 5000 # total number of files
for i in range(1, num_files+1):
files_list.append(f'myfile-{i}.pdf')
这将创建一个包含 'myfile-1.pdf'、'myfile-2.pdf' 等的列表
希望这足以让您入门。
您还可以在您的函数中使用 return
来创建一个包含您以后可以使用的所有输出的新列表,而不是在您运行时打印输出:
output = []
def doSomething(i):
return i * 2
for i in range(1, 100):
output.append(doSomething(i))
# output is now a list with values like:
# [2, 4, 6, 8, 10, 12, ...]