lxml在遇到缺失标记时停止

时间:2013-10-03 12:53:14

标签: python xml lxml

我正在解析一些XML文件以提取特定标签。在这里有很多帮助,它正在使用我的测试文件。我现在有一个新问题;我的同事要我测试的下一个文件似乎缺少一些标签。

这是我目前的代码:

with open('output.log', 'w') as f:
   for info in root.xpath('//xmlns:ProgramInformation', namespaces=nsmap):
      crid = (info.get('programId')) # retrieve crid
      title = (info.find('.//xmlns:Title', namespaces=nsmap).text) # retrieve title
      genre = (info.find('.//xmlns:Genre/xmlns:Name', namespaces=nsmap).text) # retrieve genre
      f.write('{}|{}|{}\n'.format(crid, title, genre))

'crid'将始终存在,但似乎存在一些不会生成标题和/或流派的问题。这导致一切都停止。

有没有办法让代码跳过丢失的标签(但仍然写入crid)并转到下一组,或者将错误写入输出文件(代替缺失的方法)标题或流派)。

1 个答案:

答案 0 :(得分:0)

不幸的是,

并不紧凑,但你必须把它分开:

  titlex = info.find('.//xmlns:Title', namespaces=nsmap)
  title = titlex.text if titlex != None else ''