Как использовать Python-Docx для извлечения абзацев между заголовком и таблицейPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как использовать Python-Docx для извлечения абзацев между заголовком и таблицей

Сообщение Anonymous »

Я использую Python-docx для работы с несколькими большими текстовыми документами, извлечения заголовков, абзацев и содержимого таблиц и помещения их в Excel. Код работает хорошо, ЗА ИСКЛЮЧЕНИЕМ случаев, когда между заголовком и таблицей имеется несколько абзацев. Я порылся в документации и безуспешно искал решение в Google.
Когда содержимое Word выглядит так, мой код работает нормально.
< ol>
[*]Первый абзац – это текст со стилем заголовка 1, начинающийся с '['
[*]Второй абзац – "обычный" текст
< li>Таблица с несколькими полями текста

Когда содержимое Word выглядит так, мой код не работает должным образом. Код помещает второй, третий и четвертый абзацы не в то место.
  • Первый абзац представляет собой текст со стилем заголовка 1, который начинается с '[' >
  • Второй абзац — «обычный» текст.
  • Третий абзац — «обычный» текст.
  • Четвертый абзац — «обычный». text
  • Таблица с несколькими полями текста
Что я хочу:
  • Первый абзац представляет собой текст со стилем заголовка 1, который начинается с '[' и записывается в мой список заголовков
    Объедините эти абзацы в один фрагмент текста
    2) Второй абзац это «обычный» текст
    3) Третий абзац — «обычный» текст
    4) Четвертый абзац — «обычный» текст
  • Таблица с несколькими полями текста для записи мой список строковых данных работает отлично
Вот фрагмент кода, который читается в заголовках и абзацах.

Код: Выделить всё

#######################################################################################################
# Define the function that will read in the headings from the Word document
def iter_headings(paragraphs):
for paragraph in paragraphs:
if paragraph.style.name.startswith('Heading') and paragraph.text.startswith('['):
Req_Name.append(paragraph.text)
return Req_Name

#######################################################################################################
# Define the function that will read in the paragraph text from the Word document
def iter_text(paragraphs):
for paragraph in paragraphs:
if paragraph.style.name.startswith('Normal') and paragraph.text:
Req_Text.append(paragraph.text)
return Req_Text

#######################################################################################################

for paragraph in iter_headings(doc.paragraphs):
Req_Name

Req_Name=pd.DataFrame(Req_Name)
Req_Name.to_excel('req_name.xlsx')

# # Read in the requirement text
for paragraph in iter_text(doc.paragraphs):
Req_Text

Req_Name=pd.DataFrame(Req_Name)

# Read in the tabular data from word
for i in range(0, tableCount):
table = doc.tables[i]
if table.cell(0, 0).text != 'Rationale': continue
print('i = ', i)
reqCount=reqCount+1

# Extract cell contents
Rationale = table.cell(0, 1).text
Crit_Cat = table.cell(1, 1).text
Defining = table.cell(2, 1).text
Complying = table.cell(3, 1).text
Conflicting = table.cell(4, 1).text
Valid_Strat = table.cell(5, 1).text
Valid_Result = table.cell(6, 1).text
Valid_Status = table.cell(7, 1).text
Verify_Strat = table.cell(8, 1).text
Verify_Result = table.cell(9, 1).text
Verify_Status = table.cell(10, 1).text

lineData=(Rationale, Crit_Cat, Defining, Complying, Conflicting, Valid_Strat,
Valid_Result, Valid_Status, Verify_Strat, Verify_Strat, Verify_Result, Verify_Status)
Я думаю, что мне нужно определить, когда начинается таблица, а затем объединить все абзацы между заголовком начала таблицы в один фрагмент текста, но я не могу понять, как определить начало таблицы.
Как далеко я от базы и есть ли более простой способ??

Подробнее здесь: https://stackoverflow.com/questions/787 ... and-a-tabl
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • OpenXML body.Elements() пуст при извлечении абзацев из DOCX в .NET 8
    Anonymous » » в форуме C#
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Используйте pdfplumber для извлечения абзацев
    Anonymous » » в форуме Python
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Как применить разницу между основным заголовком оси Y и заголовком подграфика по оси Y
    Anonymous » » в форуме Python
    0 Ответы
    42 Просмотры
    Последнее сообщение Anonymous
  • Совместите значок с заголовком, пока текст начинается под заголовком
    Anonymous » » в форуме Html
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Совместите значок с заголовком, пока текст начинается под заголовком
    Anonymous » » в форуме CSS
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»