Утилита 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 должен иметь следующее содержимое:
{.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 должен выглядеть следующим образом:
{.ezlazyload}
На выходе вы можете увидеть три абзаца, которые вы добавили в файл MS Word, а также три заголовка и одно изображение.
Заключение
В статье дается краткий обзор того, как читать и писать файлы MS Word с
помощью модуля python-docx
В статье рассказывается, как читать абзацы
и запускать их из файла MS Word. Наконец, в этой статье был объяснен
процесс записи файлов MS Word, добавления абзаца, пробежек, заголовков и
изображений в файлы MS Word.