Читайте таблицу MS Word с Docx2python - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть несколько таблиц в Word, которые я хочу прочитать. Я попробовал описанный здесь подход для очистки таблицы документов Word с использованием docx2 python: http://theautomatic.net/2019/10/14/how-to-read-word-documents-with-python/, и он хорошо работает с приведенным примером. Но если я добавлю вторую строку к заголовку таблицы или одному из полей данных, я потеряю вторую строку информации в кадре данных.

В моем примере 2 таблицы Word, и здесь он отображается . (Я не мог понять, как прикрепить фактический файл MSWord, который существует на моем c: диске)

Мой код:

for i in range( 0 , len(doc_result.body)): 
    print('when i=', i, 'doc_result:  ','\n', doc_result.body[i],'\n')

    bodydf1=pd.DataFrame(doc_result.body[i][0:])
    #bodydf1.columns = [val[0] for val in doc_result.body[i][0]]
    print('After df command:  i=',i,'\n',bodydf1, '\n')

    readval=lambda val: val[0]   #this is code as written in article
    bodydf2= bodydf1.applymap(readval)
    print('with lambda val[0]:  ','\n',bodydf2, '\n')

    readval1=lambda val: val[0:]    #this is my code to try to read all lines in the table cell
    bodydf3= bodydf1.applymap(readval1)
    print('with lambda val[0:]:  ','\n',bodydf3, '\n')

Когда обрабатывается первая таблица, Я получаю результат , аналогичный примеру в статье, если использовать val [0]. Когда 2-я таблица обрабатывается, она «теряет» 2-ю строку текста, т.е. «Вторая строка поля 1», «Вторая строка поля 2», «Вторая строка поля информации 1», как показано здесь .

Я попытался добавить оператор readval1 с val [0:], думая, что нужно прочитать всю ячейку, но он не показывает 2-ю строку и создает результат в виде списка.

Как мне захватить все строки в любой данной ячейке и захватить их в результате кадра данных?

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