#python-3.x #tabula
#python-3.x #tabula
Вопрос:
При импорте данных из pdf с использованием tabula на Python в некоторых случаях я получаю два или более столбца, объединенных в один. Это происходит не со всеми файлами, полученными из одного и того же 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)
Пять чисел находятся в одном столбце, поэтому я не могу обрабатывать их по отдельности.
Возможно ли улучшить обработку данных в этих случаях?
Ответ №1:
Вы могли бы попробовать вручную отредактировать данные в Excel. Если вы используете text to columns на вкладке data в Excel, это позволяет вам разбить один столбец на несколько без особых усилий, но вам нужно будет делать это для каждого файла Excel, что может быть затруднительно.
Комментарии:
1. Я также пробовал конвертировать pdf в Excel, прежде чем использовать его с Python. Но в нем также есть некоторое ручное редактирование, которого я пытаюсь избежать.
2. Вы пробовали другой метод извлечения в tabula? Это могло бы дать лучшие результаты. Кроме этого, у меня действительно ничего нет для вас. Год назад мне пришлось использовать tabula для 35-ти огромных файлов Excel, и мне пришлось выполнить тонну ручного редактирования в Excel, что было не весело
Ответ №2:
Итерация по каждому элементу каждого столбца каждого фрейма данных в списке, полученном с помощью 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 значения. Итак, все еще необходимо вручную внести небольшую правку.