我正在使用python3.5中的LXML解析TEI-XML文件。出于某种原因,我不明白,解析器会在有嵌套标记的地方中断<p>
标记内容。你知道吗
这是我的密码:
from lxml import etree
namespaces = {'tei':'http://www.tei-c.org/ns/1.0'}
xp_p = "//tei:body//tei:p//text()"
tree = etree.parse("data/sorb.xml")
paragraphs = tree.xpath(xp_p, namespaces=namespaces)
for par in paragraphs:
print(par)
例如,如果XML文件中有一个<p>
,如下所示:
<p xml:id="b1d3qun-cdtvet">
<lb ed="#S"/>Circa distinctionem 3m quaero utrum mens humana
<lb ed="#S"/>sit <choice><orig>ymago</orig><reg>imago</reg></choice> trinitatis increatae <choice><orig>sicud</orig><reg>sicut</reg></choice> in rebus a<lb ed="#S"/>liis factis propter hominem est vestigium eiusdem tri<lb ed="#S"/>nitatis
</p>
我的剧本打破了它的内容:
Circa distinctionem 3m quaero utrum mens humana
sit
ymago
imago
trinitatis increatae
sicud
sicut
in rebus a
liis
factis propter hominem est vestigium eiusdem tri
nitatis
然而,我想得到整个<p>
,因此:
Circa distinctionem 3m quaero utrum mens humana sit ymago imago trinitatis increatae sicud sicut in rebus a liis factis propter hominem est vestigium eiusdem tri nitatis
我的问题的第一部分是,发生了什么,我该如何解决我的问题?你知道吗
我的问题的第二部分是,我怎样才能得到另一个结果?你知道吗
大约3米宽的人坐在三位一体的椅子上,增加了支撑人和三位一体遗迹的自然力
(即<p>
的全部内容)?你知道吗
xpath表达式显式请求文本节点:
因此,返回的是
<p>
元素中包含的文本节点列表。你知道吗您可能希望迭代
<p>
元素本身,而不是文本节点:然后在循环中,使用xpathstring函数:
这会给你:
你可以得到类似的结果:
…这样做的好处是可以将所有换行符转换为空格,因此您将得到:
如果您想要的不是文本而是
<p>
元素中包含的整个HTML内容,请参见this answer。解决方案如下所示:结果是:
相关问题 更多 >
编程相关推荐