В настоящее время я работаю над проектом обработки естественного языка на Python. У нас есть html-тексты научных статей, которые мы анализируем с помощью Pythons lxml.etree и сохраняем как Elements и ElementTrees. Некоторые из наших html-текстов фактически преобразованы в pfs с помощью pdf2htmlEX (https://github.com/coolwanglu/pdf2htmlEX). Этот конвертер превращает каждую строку статьи в div, удаляя пробелы из конечных строк.
Итак, этот html:
<div>This is a</div>
<div>sample text.</div>
... анализируется следующим образом:
This is asample text.
Обратите внимание на отсутствие пробелов между «a» и «sample».
Мне нужно, чтобы это выглядело так:
This is a sample text.
Мне нужно как-то вручную добавить пробел в конец строки. У Etree есть атрибут Element.text, и Element.text можно изменить, как и любые другие строки. Element.text + = '' приводит к добавлению пробела в конец .text. Однако .text будет идти только до первого дочернего тега. Рассмотрим следующий код:
html = '<div>This is a <strong>sample</strong> text.</div>'
el = etree.fromstring(html)
print(el.text)
Напечатанный результат:
'This is a '
К сожалению, у Element нет атрибута для достижения конец текста. Если вы хотите использовать все текстовое содержимое элемента, вам нужно использовать '' .join (el.itertext ()). К сожалению, по нескольким причинам мне нужно напрямую изменить текстовое содержимое элементов. Сохранение результатов itertext и использование их в остальной части кода для меня сейчас не вариант.
Чтобы добавить еще один вызов, существуют разные варианты одной и той же проблемы:
html_1 = <div>This is a <strong>sample</strong> text.</div>
html_2 = <div>This is a sample <strong>text.</strong></div>
Это разные случаи: html_1 имеет конечную строку в элементе div, а html2 - в сильном.
Есть ли решение, в котором я могу добавить пробел в конец строки в элементе?
Спасибо, что полностью решили мою проблему!






Это может помочь вам понять свойство
tailэлемента, которое содержит текст после конечного тега элемента, но перед начальным тегом следующего родственного элемента. Это хорошо описано здесь: infohost.nmt.edu/~shipman/soft/pylxml/web/etree-view.html.