Можно ли заменить эти длинные коды на функцию рекурсии? - PullRequest
0 голосов
/ 15 января 2020

Я пытаюсь получить данные из таблиц (включая вложенные таблицы) в документе .docx. Однако мой текущий код выглядит следующим образом:

def pctnt():
    tables = doc.tables
    for table in tables:
        for row in table.rows:
            for cell in row.cells:
                for paragraph in cell.paragraphs:
                    print(paragraph.text)
                for table in cell.tables:
                    for row in table.rows:
                        for cell in row.cells:
                            for paragraph in cell.paragraphs:
                                print(paragraph.text)
                            for table in cell.tables:
                                for row in table.rows:
                                    for cell in row.cells:
                                        for paragraph in cell.paragraphs:
                                            print(paragraph.text)

Он работает нормально для моего текущего .docx, так как я знаю, сколько будет вложенных таблиц.

Однако это не будет в случае, когда мне приходят другие документы, поэтому мне нужен способ извлечения данных из вложенных таблиц независимо от их количества в документе.

НОВЫЙ ВОПРОС, основанный на решении, заданном @ Boendal

Могу ли я напечатать данные в список, чтобы я мог распечатать украшенную таблицу, используя pandas, или найти определенную c ячейку таблицы?

1 Ответ

1 голос
/ 15 января 2020

С описанием, которое вы дали, и вашим фрагментом кода это должно работать:

def print_paragraphs(doc):
    for table in doc.tables:
        for row in table.row:
            for cell in row.cells:
                for paragraph in cell.paragraphs:
                    print(paragraph.text)
                print_paragraphs(cell)

print_paragraphs(doc)
...