lxml遇到丢失的标记时停止

2024-04-27 13:24:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在解析一些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)并移到下一组,或者有没有办法将错误写入输出文件(代替丢失的标题或流派)。你知道吗


Tags: 文件代码text标记info标题titlefind
1条回答
网友
1楼 · 发布于 2024-04-27 13:24:53

不幸的是,没有那么紧凑,但你必须把它分开:

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

相关问题 更多 >