使用tabula将表格从pdf导入到python时出现问题

问题描述 投票:0回答:2

使用tabula和Python从pdf导入数据时,在某些情况下,我会在一个中合并两个或多个列。从同一pdf获得的所有文件都不会发生这种情况。

在这种情况下,这是用于阅读pdf的代码:

from tabula import wrapper

tables = wrapper.read_pdf("933884 cco Saupa 1.pdf",multiple_tables=True,pages='all')

i=1

for table in tables:

    table.to_excel('output'+str(i)+'.xlsx',index=False)

    i=i+1

例如,当我打印从其中一个excel文件中获取的数据帧的第一项时,名为“output_pd”:

print (output_pd[0][1])

我获得:

76) 858000015903708 77) 858000013641969 78)

这五个数字在一列中,所以我不能单独处理它们。在这些情况下是否可以改进数据处理?

python-3.x tabula
2个回答
0
投票

您可以尝试手动编辑excel中的数据。如果在excel中的数据选项卡下使用文本到列,它允许您将一列拆分成多列而不需要太多工作,但是您需要为每个excel文件执行此操作,这可能很麻烦。


0
投票

在使用tabula获得的列表中的每个数据帧的每列的每个项目中进行迭代

wrapper.read_pdf(file)

在这种情况下

tables

可以获得干净的数据。在这种情况下:

prueba =[]
i = 0
for table in tables:    
    for columna in table.columns:        
        for item in (str(table[columna]).split(" ")):            
            if "858" in str(item):
                prueba.append(item[0:15]) 
print (prueba[0:5])

造成:

['858000019596025', '858000015903707', '858000013641975', '858000000610864', '858000013428853']

tabula.wrapper.read_pdf

没有阅读整个初始pdf。最后一页留有2个值。因此,手动进行一些编辑仍然是必要的。

© www.soinside.com 2019 - 2024. All rights reserved.