Я нашел несколько похожих вопросов, но ничего от Python.
Контекст:
У меня есть много файлов PDF (текст), в которых есть таблица среди других текстов.
Положение и размер таблицы варьируется от файла к файлу.
Я уже пробовал разные библиотеки, но pdftotext был лучшим до сих пор. Табула не работает, например.
Решение до сих пор:
Я использую pdftotext, чтобы извлечь всю информацию в виде большой строки, найти подстроки, которые всегда будут разделять таблицу, и сохранить таблицу в переменной
К сожалению, я не могу написать все содержимое таблицы, но первые две строки:
D Staph. aureus Ps. aeruginosa E. coli ATCC Ser. Asp. Cand. albicans
a ATCC 6538, ATCC 9027, Ps. 8739, Ent. marcescens brasiliensis ATCC 10231,
, так как pdftotext ставит "\ n" в конце каждой строки, я могу разбить таблицу на каждую строку
Моя цель здесь состоит в том, чтобы разделить эту строку на подстроки в виде столбцов следующим образом:
['Staph. aureus', 'Ps. aeruginosa', 'E. coli ATCC', 'Ser.', 'Asp.', 'Cand. albicans']
и это:
['ATCC 6538, ', 'ATCC 9027, Ps. ', '8739, Ent. ', 'marcescens ', 'brasiliensis ', 'ATCC 10231,']
Вторая строка была разделена на каждые 15 символов, например
Я понял, что максимальная длина столбца составляет 15 символов, поэтому я попытался разделить его следующим образом: n = 15:
print([line[i: (i + n)] for i in range(0, len(line), n)])
но вот что я получаю:
['Staph. aureus ', 'Ps. aeruginosa ', 'E. coli ATCC Se', 'r. ', 'Asp. ', 'Cand. albicans']
Вопрос здесь в том, как вырезать строку в подстроки, не вырезая слова?
Я уже понял, что если я обрезаю линию позиции [i + n], линия позиции [i + n-1] должна быть равна "", чтобы не вырезать слово.