«Это 18-й день моего участия в ноябрьском испытании обновлений, ознакомьтесь с подробностями события:Вызов последнего обновления 2021 г.".
предисловие
pdfplumber
является открытым исходным кодомpython
библиотека инструментов, которую можно легко получитьPDF
Различная информация, такая как текстовое содержимое, заголовок, таблица, размер и т. Д., Сегодня мы расскажем, как использовать ее для извлечения.PDF
форма в .
Установить
Сначала установите его с помощью следующей командыpdfplumber
модуль.
pip install pdfplumber
Или используйте зеркальный источник Douban для установки.
pip install -i https://pypi.douban.com/simple pdfplumber
кейс
Вот список победителей конкурса компьютерного дизайна для студентов 2020 года в Китае.PDF
Формат, каждая страница содержит таблицу, таблица содержит информацию о победе для каждой команды, всего 158 страниц. Первые две страницы формы выглядят следующим образом.
Следующее будетPDF
Извлеките таблицу и сохраните ее вExcel
середина.
Сначала импортируйте необходимые модули:
import pdfplumber
import pandas as pd
читатьPDF
документ
read_path = '2020年中国大学生计算机设计大赛参赛作品获奖名单.pdf'
pdf_2020 = pdfplumber.open(read_path)
pages
свойство содержитPDF
информация на каждой странице, просмотрите содержимое каждой страницы, используйтеextract_table()
Метод извлекает данные таблицы на каждой странице и преобразует данные вDataFrame
и, наконец, объединить данные каждой страницы.
result_df = pd.DataFrame()
for page in pdf_2020.pages:
table = page.extract_table()
df_detail = pd.DataFrame(table[1:], columns=table[0])
# 合并每页的数据集
result_df = pd.concat([df_detail, result_df], ignore_index=True)
На данный момент данные в DataFrame выглядят следующим образом:можно увидеть сквозьextract_table()
Извлеченные данные содержат много столбцов с отсутствующими значениями. Нам также необходимо дополнительно обработать DataFrame, чтобы удалить все столбцы с отсутствующими значениями.
result_df.dropna(axis=1, how='all', inplace=True)
После удаления отсутствующего значения имя столбца также удаляется, и необходимо указать соответствующее имя столбца.
result_df.columns = ['奖项', '作品编号', '作品名称', '参赛学校', '作者', '指导老师']
На данный момент мы успешно извлекли полную информацию из формы!
полный код
import pdfplumber
import pandas as pd
def read_pdf(read_path, save_path):
pdf_2020 = pdfplumber.open(read_path)
result_df = pd.DataFrame()
for page in pdf_2020.pages:
table = page.extract_table()
print(table)
df_detail = pd.DataFrame(table[1:], columns=table[0])
result_df = pd.concat([df_detail, result_df], ignore_index=True)
result_df.dropna(axis=1, how='all', inplace=True)
result_df.columns = ['奖项', '作品编号', '作品名称', '参赛学校', '作者', '指导老师']
result_df.to_excel(excel_writer=save_path, index=False, encoding='utf-8')
read_path = r'2020年中国大学生计算机设计大赛参赛作品获奖名单.pdf'
save_path = r'2020年中国大学生计算机设计大赛参赛作品获奖名单.xlsx'
read_pdf(read_path, save_path)
Это то, чем я хочу поделиться сегодня, поиск WeChatНовые горизонты Python, приносить вам больше полезных знаний каждый день.Организовано более тысячи наборов шаблонов резюме, и сотни электронных книг ждут, когда вы их соберете! Существует также группа обмена Python Xiaobai.Если вы заинтересованы, вы можете связаться со мной указанным выше способом!