Я перебираю документ по абзацам, затем разбиваю каждый текст абзаца на предложения по .
(точка с пробелом). Я делю текст абзаца на предложения в i n, чтобы сделать более эффективный поиск текста по сравнению с поиском по всему тексту абзаца.
Затем код ищет ошибку в каждом слове предложения, ошибка берется из базы данных с исправлением ошибок. Я показываю ниже упрощенный код:
from docx.enum.text import WD_BREAK
for paragraph in document.paragraphs:
sentences = paragraph.text.split('. ')
for sentence in sentences:
words=sentence.split(' ')
for word in words:
for error in error_dictionary:
if error in word:
# (A) make simple replacement
word = word.replace(error, correction, 1)
# (B) alternative replacement based on runs
for run in paragraph.runs:
if error in run.text:
run.text = run.text.replace(error, correction, 1)
# here we may fetch page break attribute and knowing current number
# find out at what page the replacement has taken place
if run.page_break== WD_BREAK:
current_page_number +=1
replace_counter += 1
# write to a report what paragraph and what page
write_report(error, correction, sentence, current_page_number )
# for that I need to know a page break
Проблема в том, как определить, содержит ли прогон (или другой элемент абзаца) разрыв страницы? run.page_break == WD_BREAK
работает?
@scanny показал как добавить разрыв страницы , но как идентифицировать его ?
Лучше всего было бы, если бы в абзаце * 1017 можно было также указать разрыв строки.
Я мог бы сделать:
for run in paragraph.runs:
if run._element.br_lst:
for br in run._element.br_lst:
br_couter+=1
print br.type
Пока этот код показывает только Жесткие разрывы , то есть вставки через Ctrl + Enter . Мягкие разрывы страниц не обнаруживаются ... ( Мягкие разрывы страниц формируются, когда пользователь продолжает печатать, пока не закончится страница, на которой он работает, а затем переходит на следующую страницу)
Есть подсказки?