Python: импорт текста из HTML или текстового документа в Word - PullRequest
0 голосов
/ 07 апреля 2020

Я просматривал некоторую документацию, но вся работа, которую я видел вокруг docx, в первую очередь направлена ​​на работу с текстом уже в текстовом документе. Я хотел бы знать, есть ли простой способ взять текст из HTML или из текстового документа, импортировать его в текстовый документ и сделать это оптом? со всем текстом в документе HTML / Text? Кажется, строка не очень нравится, она слишком длинная.

Насколько я понимаю, документация заключается в том, что вам приходится работать с текстом по пунктам. Задача, которую я хотел бы выполнить, относительно проста, однако она выходит за рамки моих python навыков. Я хотел бы установить поля в текстовом документе, а затем импортировать текст в текстовый документ так, чтобы он соответствовал полям, которые я указывал ранее.

У кого-нибудь есть какие-нибудь мысли? Ни одно из предыдущих сообщений не было очень полезным, которое я нашел.

import textwrap
import requests
from bs4 import BeautifulSoup
from docx import Document
from docx.shared import Inches


class DocumentWrapper(textwrap.TextWrapper):

    def wrap(self, text):
        split_text = text.split('\n\n')
        lines = [line for para in split_text for line in textwrap.TextWrapper.wrap(self, para)]
        return lines

page = requests.get("http://classics.mit.edu/Aristotle/prior.mb.txt")
soup = BeautifulSoup(page.text,"html.parser")

#we are going to pull in the text wrap extension that we have added.
#The typical width that we want tow
text_wrap_extension = DocumentWrapper(width=82,initial_indent="",fix_sentence_endings=True)
new_string = text_wrap_extension.fill(page.text)

final_document = "Prior_Analytics.txt"

with open(final_document, "w") as f:
    f.writelines(new_string)

document = Document(final_document)


### Specified margin specifications
sections = document.sections
for section in sections:
    section.top_margin = (Inches(1.00))
    section.bottom_margin = (Inches(1.00))
    section.right_margin = (Inches(1.00))
    section.left_margin = (Inches(1.00))

document.save(final_document)

Я получаю сообщение об ошибке ниже:

docx.opc.exceptions.PackageNotFoundError: Package not found at 'Prior_Analytics.txt'

Ответы [ 2 ]

0 голосов
/ 09 апреля 2020

Я понял.

document = Document()
sections = document.sections
for section in sections:
    section.top_margin = Inches(2)
    section.bottom_margin = Inches(2)
    section.left_margin = Inches(2)
    section.right_margin = Inches(2)
document.add_paragraph(###Add your text here. Add Paragraph Accepts text of whatever size.###)
document.save()#name of document goes here, as a string.
0 голосов
/ 07 апреля 2020

Эта ошибка просто означает, что в указанном вами месте нет файла .docx. Таким образом, вы можете изменить свой код, чтобы создать файл, которого он не существует.

final_document = "Prior_Analytics.txt"

with open(final_document, "w+") as f:
    f.writelines(new_string)

Вы предоставляете относительный дорожка. Откуда вы знаете, каков текущий рабочий каталог Python? Отсюда и начнется относительный путь.

Пара таких строк кода скажет вам:

import os
print(os.path.realpath('./'))

Обратите внимание:

docx используется для открытия .docx файлов

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