Цикл по PDF-файлам с табулизатором в Python
Мне трудно заставить работать код. Я хочу перебрать pdf-файлы в папке, извлечь то, что пакет tabula считает таблицами, извлечь их в фрейм данных и записать все таблицы из определенного pdf-файла в один CSV-файл.
Я посмотрел на этот пост (и несколько других), но все же у меня проблемы с тем, чтобы заставить его работать. Кажется, что скрипт просматривает файлы, извлекает некоторые таблицы, но он не перебирает файлы, и я не могу заставить его записать все кадры данных в файл csv. Скрипт просто записывает последний в CSV.
Это то, что я до сих пор. Любая помощь будет принята с благодарностью, в частности, как правильно перебрать файлы и записать все таблицы из одного PDF в один CSV-файл. Я застрял...
pdf_folder = 'C:\\PDF extract\\pdf\\'
csv_folder = 'C:\\PDF extract\\csv\\'
paths = [pdf_folder + fn for fn in os.listdir(pdf_folder) if fn.endswith('.pdf')]
for path in paths:
listdf = tabula.read_pdf(path, encoding = 'latin1', pages = 'all', nospreadsheet = True,multiple_tables=True)
path = path.replace('pdf', 'csv')
for df in listdf: (df.to_csv(path, index = False))
1 ответ
Как и в случае с @Scott Hunter, вы не используете CSV_folder
Кроме того, я думаю, что вы перезаписываете созданные файлы.csv:
for df in listdf: (df.to_csv(path, index = False))
Для каждой итерации цикла for переменная пути остается неизменной.
Редактировать: Вы, вероятно, должны попытаться сделать что-то вроде этого:
pdf_folder = 'C:\\PDF extract\\pdf\\'
paths = [pdf_folder + fn for fn in os.listdir(pdf_folder) if fn.endswith('.pdf')]
for path in paths:
listdf = tabula.read_pdf(path, encoding = 'latin1', pages = 'all', nospreadsheet = True,multiple_tables=True)
path = path.replace('pdf', 'csv')
df_concat = pd.concat(listdf)
df_concat.to_csv(path, index = False)