Соскребание текста из документов doc и docx в одну функцию - PullRequest
0 голосов
/ 14 мая 2019

Я перебираю список URL, которые ссылаются на файлы docx, doc и pdf.Я написал функцию, которая позволяет мне извлекать текст из файлов docx и добавлять его в новый список.Меня не интересуют файлы pdf, но я также хотел бы извлечь текст из файлов doc с помощью той же функции.

После некоторых исследований кажется, что большинство людей textract рекомендует загрузить docx.и документы документы.Тем не менее, я не могу правильно запустить его на своем устройстве и хотел бы найти другое решение.

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

Так выглядит функция прямо сейчас.Он загружает все файлы и извлекает текст из файлов DOCX в списке.«Пусто» в противном случае.

import os.path
import urllib.request
import os
import requests
import docx2txt

l = []
for link in urls:
    link = link.strip()
    name = link.rsplit('/', 1)[-1]
    filename = os.path.join(name)
    quoted_url = urllib.parse.quote(link, safe=":/")

    if not os.path.isfile(filename):
        print('Downloading: ' + filename)
        try:
            urllib.request.urlretrieve(quoted_url, filename)
            try:
                file = docx2txt.process(filename)
                file = file.replace('\n', ' ')
                file = file.replace('\t', ' ')
                l.append(file)
            except:
                print('  no docx file')
                l.append('empty')
        except Exception as inst:
            print(inst)
            print('  Encountered error. Continuing.')
            l.append('empty')

Ожидаемый вывод будет состоять в том, чтобы извлечь текст из doc и docx файлов в списке и в противном случае «пусто» (для pdf или плохих ссылок).

1 Ответ

0 голосов
/ 14 мая 2019

Ниже кода читайте .doc файлы:

import win32com.client

word = win32com.client.Dispatch("Word.Application")
word.visible = False
wb = word.Documents.Open("myfile.doc")
file= word.ActiveDocument
l.append(file.Range().Text)

В вашем коде сначала проверьте расширение файла, если это .docx., затем запустите ваш код, затем elif это .doc, затем запустите код выше и pass, если оно .pdf

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