我有一个这样的html文档:
<html>
<head></head>
<body>
<p>
<dfn>text</dfn>sometext
**<i>othertext</i>**
<i>...</i>
<i>...</i></p>
<p>
<dfn>text</dfn>sometext
**<i>othertext</i>**
<i>...</i>
<i>...</i></p>
</body>
</html>
我需要解析它以便我可以从每个第一个i-tag内部获取文本,并且关于dfn的文本(我将最终提取dfn-text) 目前我这个代码:
tree = etree.parse(filename)
for dfn in tree.iter('dfn'):
bu = dfn.text
for sibling in dfn.itersiblings():
su = sibling.text
if su != None and bu != None and re.findall(..,su):
places.append(bu)
这会遍历每个i-tag,有时会给我错误的输出。如何将迭代限制为只有dfn的第一个兄弟姐妹?
答案 0 :(得分:0)
找到匹配后突破itersiblings()
循环:
for dfn in tree.iter('dfn'):
bu = dfn.text
for sibling in dfn.itersiblings():
su = sibling.text
if su != None and bu != None and re.findall(..,su):
places.append(bu)
break
break
语句提前结束for sibling
循环,不再处理任何兄弟姐妹。相反,外部for dfn
循环继续使用下一个dfn
元素。