Чтение и запись файлов MS Word на Python через модуль Python-Docx

Утилита MS Word из пакета Microsoft Office - один из наиболее часто используемых инструментов для написания текстовых документов, как простых, так и сложных. Хотя люди могут легко читать и писать документы MS Word, если у вас установлено программное обеспечение Office, часто вам нужно читать текст из документов Word в другом приложении. Например, если вы разрабатываете приложение обработки естественного языка [/ what-is-natural-language-processing /] на Python, которое принимает файлы MS Word в качестве входных данных, вы должны

Утилита MS Word из пакета Microsoft Office - один из наиболее часто используемых инструментов для написания текстовых документов, как простых, так и сложных. Хотя люди могут легко читать и писать документы MS Word, если у вас установлено программное обеспечение Office, часто вам нужно читать текст из документов Word в другом приложении.

Например, если вы разрабатываете приложение для обработки естественного языка на Python, которое принимает файлы MS Word в качестве входных данных, вам нужно будет прочитать файлы MS Word в Python, прежде чем вы сможете обрабатывать текст. Точно так же часто вам нужно записать текст в документы MS Word в качестве вывода, например, в виде динамически сгенерированного отчета для загрузки.

В этой статье вы увидите, как читать и писать файлы MS Word на Python.

Установка библиотеки Python-Docx

Существует несколько библиотек, которые можно использовать для чтения и записи файлов MS Word на Python. Однако мы будем использовать модуль python-docx из-за его простоты использования. Выполните следующую pip в своем терминале, чтобы загрузить python-docx как показано ниже:

 $ pip install python-docx 

Чтение файлов MS Word с помощью модуля Python-Docx

В этом разделе вы увидите, как читать текст из файлов MS Word через модуль python-docx

Создайте новый файл MS Word и переименуйте его как «my_word_file.docx». Я сохранил файл в корне моей директории «E», хотя вы можете сохранить файл где угодно. Файл my_word_file.docx должен иметь следующее содержимое:

чтение файлов MS Word вPython{.ezlazyload}

Чтобы прочитать указанный выше файл, сначала импортируйте docx а затем создайте объект класса Document из модуля docx Передайте путь к my_word_file.docx конструктору Document , как показано в следующем скрипте:

 import docx 
 
 doc = docx.Document("E:/my_word_file.docx") 

Document объект класса doc теперь может быть использован , чтобы прочитать содержимое my_word_file.docx.

Чтение абзацев

После создания объекта Document используя путь к файлу, вы можете получить доступ ко всем абзацам в документе через атрибут paragraphs Пустая строка также читается в Document как абзац. Давайте возьмем все абзацы из my_word_file.docx, а затем отобразим общее количество абзацев в документе:

 all_paras = doc.paragraphs 
 len(all_paras) 

Выход:

 10 

Теперь мы итеративно распечатаем все абзацы в файле my_word_file.docx:

 for para in all_paras: 
 print(para.text) 
 print("-------") 

Выход:

 ------- 
 Introduction 
 ------- 
 
 ------- 
 Welcome to stackabuse.com 
 ------- 
 The best site for learning Python and Other Programming Languages 
 ------- 
 Learn to program and write code in the most efficient manner 
 ------- 
 
 ------- 
 Details 
 ------- 
 
 ------- 
 This website contains useful programming articles for Java, Python, Spring etc. 
 ------- 

Вывод показывает все абзацы в файле Word.

Мы даже можем получить доступ к определенному абзацу, индексируя paragraphs как массив. Распечатываем 5-й абзац в файле:

 single_para = doc.paragraphs[4] 
 print(single_para.text) 

Выход:

 The best site for learning Python and Other Programming Languages 

Чтение пробежек

Выполнение в текстовом документе - это непрерывная последовательность слов, имеющих похожие свойства, такие как одинаковые размеры шрифта, формы шрифтов и стили шрифтов. Например, если вы посмотрите на вторую строку my_word_file.docx, она содержит текст «Добро пожаловать на stackabuse.com», здесь текст «Добро пожаловать» написан обычным шрифтом, а текст «stackabuse.com» - в смелое лицо. Следовательно, текст «Добро пожаловать в» считается одним запуском, а выделенный жирным шрифтом текст «stackabuse.com» - другим запуском.

Точно так же «научиться программировать и писать код» и «наиболее эффективно» рассматриваются как два разных этапа в абзаце «научиться программировать и писать код наиболее эффективным образом».

Чтобы получить все пробеги в абзаце, вы можете использовать свойство run атрибута paragraph объекта doc

Давайте прочитаем все прогоны из абзаца номер 5 (4-й индекс) в нашем тексте:

 single_para = doc.paragraphs[4] 
 for run in single_para.runs: 
 print(run.text) 

Выход:

 The best site for 
 learning Python 
 and Other 
 Programming Languages 

Таким же образом следующий скрипт распечатывает все прогоны из 6-го абзаца файла my_word_file.docx:

 second_para = doc.paragraphs[5] 
 for run in second_para.runs: 
 print(run.text) 

Выход:

 Learn to program and write code in the 
 most efficient manner 

Написание файлов MS Word с помощью модуля Python-Docx

В предыдущем разделе вы узнали, как читать файлы MS Word в Python с помощью модуля python-docx В этом разделе вы увидите, как писать файлы MS Word через модуль python-docx

Для записи файлов MS Word необходимо создать объект Document с пустым конструктором или без передачи имени файла.

 mydoc = docx.Document() 

Написание абзацев

Для написания абзацев вы можете использовать метод add_paragraph() объекта класса Document После того, как вы добавили абзац, вам нужно будет вызвать метод save() для объекта класса Document Путь к файлу, в который вы хотите записать абзац, передается в качестве параметра методу save() Если файл еще не существует, будет создан новый файл, в противном случае абзац будет добавлен в конец существующего файла MS Word.

Следующий сценарий записывает простой абзац во вновь созданный файл MS Word с именем «my_written_file.docx».

 mydoc.add_paragraph("This is first paragraph of a MS Word file.") 
 mydoc.save("E:/my_written_file.docx") 

После выполнения вышеуказанного сценария вы должны увидеть новый файл «my_written_file.docx» в каталоге, который вы указали в методе save() Внутри файла вы должны увидеть один абзац, который гласит: «Это первый абзац файла MS Word».

Добавим еще один абзац в my_written_file.docx:

 mydoc.add_paragraph("This is the second paragraph of a MS Word file.") 
 mydoc.save("E:/my_written_file.docx") 

Этот второй абзац будет добавлен в конец существующего содержимого в my_written_file.docx.

Написание пробежек

Вы также можете писать прогоны с помощью модуля python-docx Чтобы написать прогоны, вы сначала должны создать дескриптор абзаца, к которому вы хотите добавить свой прогон. Взгляните на следующий пример, чтобы увидеть, как это делается:

 third_para = mydoc.add_paragraph("This is the third paragraph.") 
 third_para.add_run(" this is a section at the end of third paragraph") 
 mydoc.save("E:/my_written_file.docx") 

В приведенном выше сценарии мы пишем абзац с помощью add_paragraph() объекта класса Document mydoc . Метод add_paragraph() возвращает дескриптор только что добавленного абзаца. Чтобы добавить пробег к новому абзацу, вам нужно вызвать метод add_run() для дескриптора абзаца. Текст для выполнения передается в виде строки add_run() . Наконец, вам нужно вызвать метод save() чтобы создать фактический файл.

Написание заголовков

Вы также можете добавлять заголовки в файлы MS Word. Для этого вам нужно вызвать метод add_heading() . Первым параметром add_heading() является текстовая строка для заголовка, а вторым параметром - размер заголовка. Размеры заголовков начинаются с 0, где 0 является заголовком верхнего уровня.

Следующий скрипт добавляет в файл my_written_file.docx три заголовка уровня 0, 1 и 2:

 mydoc.add_heading("This is level 1 heading", 0) 
 mydoc.add_heading("This is level 2 heading", 1) 
 mydoc.add_heading("This is level 3 heading", 2) 
 mydoc.save("E:/my_written_file.docx") 

Добавление изображений

Чтобы добавить изображения в файлы MS Word, вы можете использовать метод add_picture() . Путь к изображению передается в качестве параметра add_picture() . Вы также можете указать ширину и высоту изображения с помощью docx.shared.Inches() . Следующий сценарий добавляет изображение из локальной файловой системы в файл Word my_written_file.docx. Ширина и высота изображения будут 5 и 7 дюймов соответственно:

 mydoc.add_picture("E:/eiffel-tower.jpg", width=docx.shared.Inches(5), height=docx.shared.Inches(7)) 
 mydoc.save("E:/my_written_file.docx") 

После выполнения всех сценариев из раздела Написание файлов MS Word с помощью модуля Python-Docx этой статьи ваш окончательный файл my_written_file.docx должен выглядеть следующим образом:

запись файлов MS Word наPython{.ezlazyload}

На выходе вы можете увидеть три абзаца, которые вы добавили в файл MS Word, а также три заголовка и одно изображение.

Заключение

В статье дается краткий обзор того, как читать и писать файлы MS Word с помощью модуля python-docx В статье рассказывается, как читать абзацы и запускать их из файла MS Word. Наконец, в этой статье был объяснен процесс записи файлов MS Word, добавления абзаца, пробежек, заголовков и изображений в файлы MS Word.

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus