Вы должны использовать другую, более эффективную (IMHO) библиотеку. Я немного упростил код:
from lxml import etree
root = etree.fromstring(r.content)
Оттуда код такой же, как в вашем вопросе.
Однако, поскольку это файл xml, вам лучше ( опять же, ИМХО) вместо этого использовать методы xpath. Может показаться, что это не имеет большого значения в этом случае, но там, где xml серьезно усложняется (и это часто бывает), xpath намного лучше. Методы xpath выглядели бы так (я заменил блок try / исключением на блок if / else, но это просто личное предпочтение):
for customer in root.xpath('//customer'):
checking_account = customer.xpath("./checking_account")[0].text
if len(customer.xpath('./savings_account'))>0:
savings_account = customer.xpath('./savings_account')[0].text
else:
savings_account = "None"
name = customer.xpath('./name')[0].text
print(name, "Checking Account:", checking_account, "Savings Account:", savings_account)
В любом случае выходные данные одинаковы:
Susan Stone Checking Account: 465498435 Savings Account: None
Roger Roman Checking Account: 165498165 Savings Account: 64565435
Gary Grooman Checking Account: 654846546 Savings Account: None
Janet Jones Checking Account: 954387383 Savings Account: None
Nancy Noons Checking Account: 684981651 Savings Account: 5645648465