使用Python将数据写入Excel For循环

我目前正在将PDFS转换为巨大文件夹中的文本,然后将某些关键字输出到Excel文件中。 一切工作正常,除了即使我有我的文件夹中的多个PDFS,他们都写在列A1对方。

如何迭代它,以便下一个字典进入后续行?

custData = {} def data_grabbing(pdf): row = 0 col = 0 string = convert_pdf_to_txt(pdf) lines = list(filter(bool,string.split('\n'))) for i in range(len(lines)): if 'Lead:' in lines[i]: custData['Name'] = lines[i+2] elif 'Date:Date:Date:Date:' in lines[i]: custData['Fund Manager'] = lines[i+2] elif 'Priority:' in lines[i]: custData['Industry'] = lines[i+2] custData['Date'] = lines[i+1] custData['Deal Size']= lines [i+3] elif 'DEAL QUALIFYING MEMORANDUM' in lines[i]: custData['Owner'] = lines[i+2] elif 'Fund Manager' in lines[i]: custData['Investment Type'] = lines [i+2] print custData for item, descrip in custData.iteritems(): worksheet.write(row, col, item) worksheet.write(row+1, col, descrip) col += 1 row +=2 for myFile in os.listdir(directory): if myFile.endswith(".pdf"): data_grabbing(os.path.join(directory, myFile)) workbook.close() 

你的一些select是:

  1. 使row成为全局的,并实例化外部函数(@ StevenRumbalski的build议)
  2. 使datag_grabbing一个类的方法,并使行成为一个实例variables。
  3. 将当前行传递给你的函数。

我会显示选项#3(但#2可能是可取的):

 custData = {} def data_grabbing(pdf, row): col = 0 string = convert_pdf_to_txt(pdf) lines = list(filter(bool,string.split('\n'))) for i in range(len(lines)): if 'Lead:' in lines[i]: custData['Name'] = lines[i+2] elif 'Date:Date:Date:Date:' in lines[i]: custData['Fund Manager'] = lines[i+2] elif 'Priority:' in lines[i]: custData['Industry'] = lines[i+2] custData['Date'] = lines[i+1] custData['Deal Size']= lines [i+3] elif 'DEAL QUALIFYING MEMORANDUM' in lines[i]: custData['Owner'] = lines[i+2] elif 'Fund Manager' in lines[i]: custData['Investment Type'] = lines [i+2] print custData for item, descrip in custData.iteritems(): worksheet.write(row, col, item) worksheet.write(row+1, col, descrip) col += 1 cur_row = 0 for myFile in os.listdir(directory): if myFile.endswith(".pdf"): data_grabbing(os.path.join(directory, myFile), cur_row) cur_row +=-2 workbook.close()