我正在解析一些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)并转到下一组,或者将错误写入输出文件(代替缺失的方法)标题或流派)。
答案 0 :(得分:0)
并不紧凑,但你必须把它分开:
titlex = info.find('.//xmlns:Title', namespaces=nsmap)
title = titlex.text if titlex != None else ''