Python xml перебирает вопросы и отвечает

У меня есть ответы на опрос, хранящиеся в xml, и, к сожалению, xml не является равномерно построенным. См. Ниже xml.

Я хотел бы перебрать divs и затем вытащить все элементы в качестве вопросов, но я не уверен, как справляться с ответами, поскольку они иногда включаются в sub

, а иногда и нет.

Я думал об использовании элементарного интертекста или прекрасного супа. Но BeautifulSoup возвращает все divs, включая внутренние, если я делаю soup.find_all('div'). tree.itertext() вид работ, но я не хочу иметь слишком много вложенных петель, если это возможно.

Любые предложения, как лучше всего справиться с этой ситуацией?

<div> <b>Question 1: What is your name?</b> My name is Peter. </div> <div> <b>Question 2: What is your native language?</b> <div>Esperanto</div> </div>
1 ответ

Итерации над верхними слоями div, извлеките текст вопроса из тега b, извлеките ответ из следующего родного брата или из текста следующего брата следующего брата:

from bs4 import BeautifulSoup
soup = BeautifulSoup(""" <div> <b>Question 1: What is your name?</b> My name is Peter. </div> <div> <b>Question 2: What is your native language?</b> <div>Esperanto</div> </div>
""")
for div in soup.find('body').findAll('div', recursive=False): question = div.find('b') print question.text print question.nextSibling.strip() or question.nextSibling.nextSibling.text.strip()

печатает:

Question 1: What is your name?
My name is Peter.
Question 2: What is your native language?
Esperanto

licensed under cc by-sa 3.0 with attribution.