如何将PyPDF2提取的内容保存到Excel文件中?
解决方法
你存Excel的代码报错,核心问题是split('\n')返回的是普通Python列表,而to_excel是Pandas DataFrame/Series专属方法,列表没法直接调用这个方法。另外循环里每次调用to_excel会覆盖之前的内容,得先把所有数据收集好再统一保存。
具体实现步骤
1. 收集所有页面的文本行
先把第3至166页的所有文本行汇总到一个列表里(注意:PyPDF2的pages索引从0开始,如果你要取的是实际PDF页码的3到166页,应该把range(3,167)改成range(2,166),因为实际第3页对应索引2,第166页对应索引165,你原来的代码可能取的是索引3到166,对应实际第4到167页,这点要核对):
import PyPDF2 import pandas as pd # 替换成你的PDF文件路径 reader = PyPDF2.PdfReader("your_file.pdf") all_text_lines = [] # 遍历目标页面 for i in range(3, 167): # 若要实际页码3-166,改成range(2,166) page_text = reader.pages[i].extract_text() if page_text: # 跳过空页面,避免报错 lines = page_text.split('\n') all_text_lines.extend(lines)
2. 转成DataFrame并保存到Excel
把汇总后的列表转换成Pandas DataFrame,再保存:
# 生成DataFrame,列名可按需修改 df = pd.DataFrame(all_text_lines, columns=["文本内容"]) # 保存到Excel,index=False去掉默认的行索引 df.to_excel('output.xlsx', index=False)
进阶优化(可选)
如果PyPDF2提取的文本格式混乱,试试用pdfplumber,它的文本提取精度更高:
import pdfplumber import pandas as pd all_text_lines = [] with pdfplumber.open("your_file.pdf") as pdf: # 实际页码3-166对应索引2到165,所以取pdf.pages[2:166] for page in pdf.pages[2:166]: page_text = page.extract_text() if page_text: lines = page_text.split('\n') all_text_lines.extend(lines) # 保存到Excel df = pd.DataFrame(all_text_lines, columns=["文本内容"]) df.to_excel('output.xlsx', index=False)
内容的提问来源于stack exchange,提问作者Antonio
相关产品推荐
相关产品推荐

