Python-Docx возвращает пустые ячейки, когда они должны быть заполнены - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь перебрать все таблицы в документе и извлечь из них текст. В качестве промежуточного шага я просто пытаюсь распечатать текст на консоли.

Я смотрел на другой код, предоставленный scanny в похожих постах, но по какой-то причине он не дает мне ожидаемого результата из документа, который я анализирую через

Документ можно найти по адресу https://www.ontario.ca/laws/regulation/140300

from docx import Document
from docx.enum.text import WD_COLOR_INDEX
import os, re, sys

document = Document("path/to/doc")

tables = document.tables

for table in tables:

    for row in table.rows:

         for cell in row.cells:

              for paragraph in cell.paragraphs:
                   print(paragraph.text)

Я ожидаю, что это распечатает весь текст, но вместо этого я ничего не получу. если я пытаюсь напечатать (row.cells), он просто печатает (). это пустой список, я думаю. В моем документе определенно есть текст в ячейках. Не уверен, что здесь не так.

Любая помощь приветствуется,

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Нашли ошибку. Я использовал сторонний инструмент (конвертер multiDoc), чтобы конвертировать старые файлы .Doc в формат Docx. работает по большей части, однако должны быть некоторые метаданные, которые не конвертируются должным образом, потому что это вызывало проблему. Открыв файл и сохранив его вручную, Docx решил проблему. Единственная проблема заключается в том, что я хочу конвертировать 2000+ файлов в Docx, поэтому мне нужно найти другое решение для конвертации файлов.

0 голосов
/ 11 января 2019

Возможно, что текст ячейки "содержится" в элементе-обертке, который python-docx еще не понимает. Наиболее распространенным примером являются метки ревизий.

Наиболее прямым способом диагностики проблемы является проверка XML для рассматриваемой таблицы с использованием opc-diag (как один из вариантов). Но если это отметки о ревизиях, я думаю, что принятие всех изменений в документе исправит это, хотя я сам на самом деле не пробовал.

Если это не сработает, и вы публикуете образец таблицы XML, я могу взглянуть поближе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...