如何解决无法解决Python 3编码
因此,我正在尝试通过PyPDF2和PDFMiner读取PDF文档。我的文档是基于带有重音词(葡萄牙语)的文本。我设法获得了所需的文本信息,但其编码完全混乱了。这只是其中的一部分:
'MINIST ... RIO DA ECONOMIA \ nSecretaria Especial de Desburocratiza“%0o,Gest%0o e Governo Digital \ nSecretaria de Gest%0o e Desempenho de Pessoal \ nComiss%0o E-Special dos Ex-TerritSrios Federais de RondZnia, Amap / e de Roraima \ nPrimeira C> mara \ n ATA DE REUNIIO \ n ATA CEEXT N!27/2020 D 1 >> C> mara de Julgamento \ nReuni%0o da 1 >> C> mara de Julgamento da Comiss%0o特殊的dos Ex-TerritSrios [...]
我尝试将其编码为UTF-8和ASCII。 UTF-8显示以下输出:
b'MINIST \ xe2 \ x80 \ xa6RIO DA ECONOMIA \ nSecretaria Esspecial de Desburocratiza \ xe2 \ x80 \ x9c \ xe2 \ x80 \ xb0o,Gest \ xe2 \ x80 \ xb0o e Governo Digital \ nSecretaria de Gest \ xe2 \ xb0o desempenho de Pessoal \ nComiss \ xe2 \ x80 \ xb0o Ex-Territ特制\ xc5 \ xa0rio Federais de Rond \ xc5 \ xbdnia,做Amap \ xe2 \ x81 \ x84 e Roraima \ nPrimeira C \ xe xbamara \ n ATA DE REUNI \ xc3 \ x8cO \ n ATA CEEXT N \ xc2 \ xa1 27/2020 \ xc3 \ x90 1 \ xc2 \ xbb C \ xe2 \ x80 \ xbamara de Julgamento \ nReuni \ xe2 \ x80 \ xb0o da 1 \ xc2 \ xbb C \ xe2 \ x80 \ xbamara [...]
当ASCII出现此错误消息时:
UnicodeEncodeError:'ascii'编解码器无法在位置6编码字符'\ u2026':序数不在范围(128)中
我尝试在文本上使用“ Unidecode”,但是它要么不执行任何操作并显示第一个输出,要么(如果文本是先前编码的)以下错误:
AttributeError:“字节”对象没有属性“编码”
我设法使一个字节对象成为str的唯一方法是根本不对它进行编码,返回到“ unidecode什么都不做”这一点。
一开始,文字应该是(如PDF文件中一样):
MINISTÉRIODA ECONOMIA Gestãoe Governo Digital的特别秘书局Desburocratização 盖世大臣和比索尔秘书 朗多尼亚联邦共和国特别委员会,阿马帕德罗赖马 PrimeiraCâmara
data_func是另一个.py文件,如下所示:
from io import StringIO
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfinterp import PDFResourceManager,PDFPageInterpreter
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfparser import PDFParser
def convert_pdf_to_string(file_path):
output_string = StringIO()
with open(file_path,'rb') as in_file:
parser = PDFParser(in_file)
doc = PDFDocument(parser)
rsrcmgr = PDFResourceManager()
device = TextConverter(rsrcmgr,output_string,laparams=LAParams())
interpreter = PDFPageInterpreter(rsrcmgr,device)
for page in PDFPage.create_pages(doc):
interpreter.process_page(page)
return(output_string.getvalue())
def convert_title_to_filename(title):
filename = title.lower()
filename = filename.replace(' ','_')
return filename
def split_to_title_and_pagenum(table_of_contents_entry):
title_and_pagenum = table_of_contents_entry.strip()
title = None
pagenum = None
if len(title_and_pagenum) > 0:
if title_and_pagenum[-1].isdigit():
i = -2
while title_and_pagenum[i].isdigit():
i -= 1
title = title_and_pagenum[:i].strip()
pagenum = int(title_and_pagenum[i:].strip())
return title,pagenum
所以我不知道该怎么办。这是我的代码:
import PyPDF2
import data_func
object = open('foo1.pdf','rb')
reader = PyPDF2.PdfFileReader(object)
print(reader.documentInfo)
num_of_pages = reader.numPages
print('Number of pages: ' + str(num_of_pages))
page = reader.getPage(0)
text = page.extractText()
text
如果过去一周一直在寻找答案,除了Python 2解决方案(在Python 3中无用)或类似“您不应期望不会在编码中丢失信息”之类的东西之外,什么都没找到。我是Stack Overflow的最新海报,所以请耐心等待,因为我最近刚开始编程。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。