我有一個資料集,其中有一列包含用于簡歷的谷歌驅動器鏈接,我有 5000 行,所以有 5000 個鏈接,我試圖從這些簡歷中的 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)
uj5u.com熱心網友回復:
使用回圈。基本上,您將主要代碼放入一個函式中(更易于閱讀)并創建一個檔案名串列。然后你迭代這個串列,使用串列中的值作為你的函式的引數:
注意:我沒有檢查你的抓取代碼,只是展示了如何回圈。還有更有效的方法可以做到這一點,但我假設你是一個 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, ...]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/437453.html
