Утилита MS Word из пакета Microsoft Office является одним из наиболее часто используемых инструментов для написания текстовых документов, как простых, так и сложных. Хотя люди могут легко читать и писать документы MS Word, предполагая, что у вас установлено офисное программное обеспечение, часто вам нужно читать текст из документов 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 файл должен иметь следующее содержимое:
Чтобы прочитать вышеприведенный файл, сначала импортируйте модуль docx
, а затем создайте объект класса Document
из модуля docx
. Пройдите по пути my_word_file.docx к конструктору класса Document
, как показано в следующем скрипте:
import docx doc = docx.Document("E:/my_word_file.docx")
Объект класса Document
class dock
теперь можно использовать для чтения содержимого my_word_file.docx.
Чтение абзацев
После создания объекта класса Document
с помощью пути к файлу можно получить доступ ко всем абзацам документа с помощью атрибута paragraphs
. Пустая строка также читается как абзац в документе . Давайте возьмем все абзацы из 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
Чтение Работает
Запуск в документе Word-это непрерывная последовательность слов, имеющих сходные свойства, такие как одинаковые размеры шрифта, формы шрифта и стили шрифта. Например, если вы посмотрите на вторую строку 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 – это заголовок верхнего уровня.
Следующий сценарий добавляет в файл три заголовка уровня 0, 1 и 2 my_written_file.docx:
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()
атрибут. Следующий сценарий добавляет изображение из локальной файловой системы в my_written_file.docx Файл Word. Ширина и высота изображения будут составлять 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, а также три заголовка и одно изображение.
Вывод
В статье дан краткий обзор того, как читать и писать файлы MS Word с помощью модуля python-docx
. Эта статья описывает, как читать абзацы и работает из файла MS Word. Наконец, процесс написания файлов MS Word, добавления абзаца, запусков, заголовков и изображений в файлы MS Word был объяснен в этой статье.