gpt4 book ai didi

python - 如何在 tabula-py 中设置页面范围?

转载 作者:行者123 更新时间:2023-12-05 05:17:12 25 4
gpt4 key购买 nike

在 Python 3 中,我有一个包含 6,041 页的 PDF 文件“Ativos_Fevereiro_2018_servidores.pdf”。我在装有 Ubuntu 的机器上。文件在这里:https://drive.google.com/file/d/1P8kF0gUOVls6sOGed4R0C2PlVF5RFtU6/view?usp=sharing

在每一页的顶部都有文本,两行。在表格下方,带有标题和两列。每张表36行,最后一页少

在每一页的末尾,在表格之后,还有一行文字

我想从这个 PDF 创建一个 CSV,只考虑页面中的表格。并忽略表格前后的文字

为了避免 java 内存错误,我想将文件分成 300 页为一组。我在 tabula-py 中这样做了:

import tabula
import pandas as pd


dfs = []

for i in range(1,6041, 300):
if i != 1:
i = i + 1

i2 = i + 300

if i2 > 6041:
i2 = 6041

print(i)
print(i2)

try:
df = tabula.read_pdf("Ativos_Fevereiro_2018.pdf", encoding='latin-1', spreadsheet=True, pages='i-i2', header=0)
dfs.append(df)
print('Page ', len(df), ' parsed.')
except:
print('Error on page: ', i)

output = pd.concat(dfs)
output.to_csv('servidores_rj_ativos_fev_18.csv', encoding='utf-8', index=False)

但是我做的范围是错误的:

1
301
Error: Syntax error in page range specification
Error on page: 1
302
602
...
Error: Syntax error in page range specification
Error on page: 5702
6002
6041
Error: Syntax error in page range specification
Error on page: 6002
Traceback (most recent call last):
File "roboseguranca_pdftocsv.py", line 26, in <module>
output = pd.concat(dfs)
File "/home/reinaldo/Documentos/Code/intercept/seguranca/lib/python3.6/site-packages/pandas/core/reshape/concat.py", line 212, in concat
copy=copy)
File "/home/reinaldo/Documentos/Code/intercept/seguranca/lib/python3.6/site-packages/pandas/core/reshape/concat.py", line 245, in __init__
raise ValueError('No objects to concatenate')
ValueError: No objects to concatenate

请问,我该如何纠正范围错误?

最佳答案

要使范围起作用,您必须将其作为字符串传递,因此将整数转换为字符串并将它们与“-”组合:

pages=(str(i)+'-'+str(i2))

一些其他的东西:

  • tabula.read_pdf 语句中也使用 encoding='utf-8'
  • 如果您还想查看抛出的错误,请扩展 except 语句,例如:

except 异常为 e: print('范围错误', i, '-', 'i2: ', e)

关于python - 如何在 tabula-py 中设置页面范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49574820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com