使用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)
这五个数字在一列中,所以我不能单独处理它们。在这些情况下是否可以改进数据处理?
您可以尝试手动编辑excel中的数据。如果在excel中的数据选项卡下使用文本到列,它允许您将一列拆分成多列而不需要太多工作,但是您需要为每个excel文件执行此操作,这可能很麻烦。
在使用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个值。因此,手动进行一些编辑仍然是必要的。