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

时间:2019-04-25 03:02:21

标签: python-3.x tabula

在某些情况下,使用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)

这五个数字在同一列中,因此我无法对其进行单独处理。 在这种情况下是否可以改善数据处理?

2 个答案:

答案 0 :(得分:0)

您可以尝试在excel中手动编辑数据。如果您在excel的“数据”标签下的列中使用文本,则无需过多的工作即可将一列拆分为多列,但是您需要为每个excel文件都这样做,这可能会很麻烦。

答案 1 :(得分:0)

在使用表格获取的列表中,对每个数据框的每个列的每个项目进行迭代

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个值。因此,仍然需要手动进行一些编辑。