python用pdfminer3k读取pdf_[求问]使用python pdfminer3k读取pdf,并将pdf按论文标题命名...

如何将下载下来的文件名乱码的pdf按论文标题命名,在windows系统下,利用Python3.6,使用pdfminer库来实现。

按照https://www.jianshu.com/p/742a28decc58中的程序来实现,按照原作者的程序,能实现步骤2(读pdf获取标题),但执行步骤3(更改文件名)后,文件名未被更改,也没有报错,请问是什么原因?

程序如下:

#encoding:utf-8

from urllib.request import urlopen

from pdfminer.pdfinterp import PDFResourceManager,process_pdf

from pdfminer.converter import TextConverter

from pdfminer.layout import LAParams

from io import StringIO #StringIO就是在内存中读写str

from io import open

import os

from os import walk

#步骤2(读pdf获取标题)

def readPDF(pdffile):

rsrcmgr=PDFResourceManager()

retstr=StringIO()

laparams=LAParams()

device=TextConverter(rsrcmgr,retstr,laparams=laparams)

process_pdf(rsrcmgr,device,pdffile)

device.close()

content=

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Pythonpdfminer库来读取PDF文件,使用正则表达式来匹配目录中的页码和内容,最后将结果输出到TXT文件中。 以下是实现的代码: ```python import re from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter from pdfminer.pdfpage import PDFPage from pdfminer.pdfparser import PDFDocument, PDFParser # 打开PDF文件 pdf_file = open('example.pdf', 'rb') # 创建PDF解析器对象 parser = PDFParser(pdf_file) # 创建PDF文档对象 document = PDFDocument() # 连接解析器和文档对象 parser.set_document(document) document.set_parser(parser) document.initialize() # 创建PDF资源管理器对象 resource_manager = PDFResourceManager() # 创建一个PDF设备对象 device = PDFPageAggregator(resource_manager, laparams=LAParams()) # 创建PDF页面解释器对象 interpreter = PDFPageInterpreter(resource_manager, device) # 创建TXT文件 txt_file = open('output.txt', 'w', encoding='utf-8') # 遍历每一页 for i, page in enumerate(PDFPage.create_pages(document)): # 使用页面解释器对象解析当前页 interpreter.process_page(page) # 获取当前页的LTPage对象 layout = device.get_result() # 将LTPage对象转换为纯文本 text = '\n'.join([obj.get_text().strip() for obj in layout if isinstance(obj, LTTextBox)]) # 匹配目录中的页码和内容 matches = re.findall(r'(\d+)\s+(.*)', text) # 将匹配结果输出到TXT文件中 for match in matches: txt_file.write(match[0] + '\t' + match[1] + '\n') # 关闭文件 pdf_file.close() txt_file.close() ``` 其中,`example.pdf`为PDF文件路径,`output.txt`为输出的TXT文件路径。在匹配目录时,使用正则表达式`r'(\d+)\s+(.*)'`,其中`(\d+)`表示匹配页码,`\s+`表示匹配多个空格,`(.*)`表示匹配目录内容。输出时,使用`\t`分隔页码和内容,使用`\n`换行。 需要注意的是,pdfminer库需要使用`pdfminer3k`或`pdfminer.six`版本,而不是原始的`pdfminer`库。另外,如果PDF文件使用了中文编码(如GB2312、GBK等),需要在打开PDF文件时指定使用相应的编码,如下所示: ```python # 打开PDF文件,并指定使用GBK编码 pdf_file = open('example.pdf', 'rb') ``` 这样就可以正确地读取中文PDF文件了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值