有这样一个html文件:
<html>
<head></head>
<body>
<p>
<dfn>A</dfn>sometext / ''
(<i>othertext</i>)someothertext / ''
(<i>...</i>)
(<i>...</i>)
</p>
<p>
<dfn>B</dfn>sometext / ''
(<i>othertext</i>)someothertext / ''
<i>blabla</i>
<i>bubu</i>
</p>
</body>
</html>
sometext/''表示dfn标记后面可以有或不能有某些文本,对于i标记也是如此。而且,它们中的i标记和文本并不总是存在的。只有dfn标记中的文本始终存在。你知道吗
我需要从每个p标签中获取所有文本信息:
A, sometext, othertext, someothertext.
B, sometext, othertext, someothertext.
C, sometext, othertext, someothertext.
...
Z, sometext, othertext, someothertext.
下面的代码几乎可以正常工作,只是在给出输出时它会进入无限循环。你知道吗
for p in tree.xpath("//p"):
dfn = p.xpath('./dfn/text()')
after_dfn = p.xpath("./dfn/following::text()")
print '\n'.join(dfn), ''.join(after_dfn)
所以,假设我有ABC的所有字母,我有这样的输出:
> A, sometext, othertext, someothertext.
>
> B, sometext, othertext, someothertext.
>
> C, sometext, othertext, someothertext.
>
> ...
>
> Z, sometext, othertext, someothertext.
> (2nd unnecessary loop):
>
> B, sometext, othertext, someothertext.
>
> C, sometext, othertext, someothertext.
>
> D, sometext, othertext, someothertext.
>
> ...
>
> Z, sometext, othertext, someothertext.
> (3rd unnecessary loop):
>
> C, sometext, othertext, someothertext.
>
> D, sometext, othertext, someothertext.
>
> E, sometext, othertext, someothertext.
>
> ...
>
> Z, sometext, othertext, someothertext...etc
奇怪的是从第一个p到最后一个p,然后从第二个p到最后一个p,然后从第三个p到最后一个p,依此类推。。。 从最初107kb的xml文件中,我得到了26mb的巨大恐惧! 拜托,帮我阻止这些循环。你知道吗
要获取
p
下面的所有文本,只需执行以下操作:如果需要按
p
聚合它们,请执行以下操作:基于
i
文本提取p
文本:或通过
dfn
文本:相关问题 更多 >
编程相关推荐