Цикл по 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)
Другие вопросы по тегам