Слово в текст :: Пронумерованные пули - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть файл .docx, в котором я пронумеровал маркеры.Примером будет:

1. Main Topic
1.1 Sub Topic 
     Facts on Sub topic
1.2 Sub Topic 1
     Facts on Sub Topic 2
2. Another main topic
2.1 random text
2.2 random text1

Мой код:

import os
import docx2txt
text=""
path = ("my_file.docx")

text=docx2txt.process(path)

Я получаю значение text, например:

Main Topic
Sub Topic 
     Facts on Sub topic
Sub Topic 1
     Facts on Sub Topic 2
Another main topic
random text
random text1

Проблема :

Вывод правильный, все, что мне нужно, это то, что нумерованные маркеры также должны быть в выводе.

Я что-то здесь упустил, чтобы получитьжелаемый вывод

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

Как вы относитесь к своей нумерации? docx2python вернет этот список как.

1) Main Topic
    1) Sub Topic 
Facts on subtopic
    2) Sub Topic 1
Facts on Sub Topic 2
2) Another main topic
    1) random text
    2) random text1

Это не ваш точный ввод, но вы можете довольно легко вернуть его обратно к тому, что вы хотели. Значения отступа и числа будут там.

Если вы просто хотите увидеть текст, как указано выше:

from docx2python import docx2python

print(docx2python('document.docx').text)

Нумерованные списки будут иметь отступы от вкладок, вы можете сосчитать вкладки и написать небольшой анализатор, начинающийся с

from docx2python import docx2python
from docx2python.iterators import iter_paragraphs

content = docx2python('document.docx')
paragraphs = list(iter_paragraphs(content.document))

Это поместит весь заголовок, нижний колонтитул, контент, сноску и текст сноски в список. Вы можете выбрать любую его часть, используя

content.header
content.footer
content.body
content.footnotes
content.endnotes

вместо content.document.

Одна из проблем, связанных с экспортом документов docx, html, pdf и т. Д. В обычный текст, заключается в том, что обычный текст не имеет возможности делать отступы в абзацах. Вы можете сделать отступ в первой строке абзаца с пробелами или табуляцией, но остальная часть абзаца не будет иметь отступ.

        My plain-text, tab-indented paragraph will only be indented before
the line wrap, after that...

Вы должны: 1) остаться в исходном формате или 2) принять серьезные компромиссы.

Удачи в вашем проекте.

0 голосов
/ 15 апреля 2019

Вы пробовали использовать python-docx и python-pptx?На самом деле маркеры не являются частью текстового содержимого в большинстве текстовых редакторов, таких как Word, поэтому их немного сложнее извлечь.Однако в python-pptx вы можете получить доступ к Paragraph.text для строки открытого текста или Paragraph.style для стиля List Bullet.

Я не полностью вникнул в это, но есть много документации для Paragraph здесь: https://python -pptx.readthedocs.io / en / latest / user / text.html

Кроме того, похоже, что это запрошенная функция: https://github.com/scanny/python-pptx/issues/100

...