XML解析后显示的问题

时间:2016-08-04 16:02:16

标签: python xml python-3.x parsing lxml

我正在解析具有以下结构的XML文档:

<Distlist>
  <DistDoc>
     <Metadata></Metadata>
     <ArchiveDoc>
        <Article>
          <Para>aaaaaa</Para>
          <Para>bbbbbb</Para>
          <Para>cccccc</Para>
        </Article>
     </ArchiveDoc>
  </DistDoc>
</Distlist>

我在每个文件中有5000篇文章,每篇文章的全文分为几段。我正在使用以下代码提取文章的全文(我使用lxml):

doc = etree.parse(path) #Parse file
root=doc.getroot() #Get the root 

#Store full texts in list
full_texts = []
for child in root:
    full_texts.append("\n\n".join(child[1][0].itertext()))

当我看到输出时,它就像这样:

aaaaaaabbbbbbcccc

虽然我的预期输出(双线中断)应该是:

aaaaaa

bbbbbb

cccccc

当段落之间没有分离时,很难阅读。我做错了什么?

1 个答案:

答案 0 :(得分:1)

迭代article个节点并加入para个节点的文本:

for article in root.xpath(".//Article"):
    texts = article.xpath(".//Para/text()")
    print("\n".join(texts))