Python实现PDF逐行写入Excel遇TypeError错误求助
解决PDF内容逐行写入Excel的TypeError问题
你代码里的TypeError是因为for循环的写法逻辑错误:for u in lin:会把列表lin里的每个字符串元素赋值给u,这时你用lin[u]去取列表元素,相当于用字符串当索引,而列表索引只能是整数或切片,自然触发报错。
修复后的代码
import pdfplumber import openpyxl # 替换为你的PDF文件实际路径 pdf = pdfplumber.open("your_pdf_file.pdf") page = pdf.pages[0] text = page.extract_text() lin = text.split("\n") # 替换为你的Excel文件实际路径 wb = openpyxl.load_workbook("your_excel_file.xlsx") ws = wb.active ws.title = "S1" # 遍历每行内容,用enumerate直接获取从1开始的Excel行号 for row_num, line_content in enumerate(lin, start=1): ws.cell(row=row_num, column=1).value = line_content wb.save("your_excel_file.xlsx") pdf.close() # 此处必须加括号,否则未实际执行关闭操作 print("Ok!")
关键修改说明
- 用
enumerate(lin, start=1)同时获取行号(从1开始对应Excel的A1、A2...)和每行文本,无需手动维护u、i两个变量,避免索引混乱。 - 直接将遍历到的文本内容赋值给单元格,取消了错误的
lin[u]索引取值操作。 - 修复
pdf.close为pdf.close(),补全方法调用的括号,确保PDF文件被正确关闭。
内容的提问来源于stack exchange,提问作者J.bruno
相关产品推荐
相关产品推荐

