Вот образец моей структуры XML:
Код: Выделить всё
0123456
mo.howard
[email protected]
USA
Contoso
0123457
larry.fine
Italy
Acme
0123456
curly.howard
[email protected]
USA
Contoso
...
...
...
Вот пример моего кода:
Код: Выделить всё
# Parse XML File
wd = open(wdpath + 'wd.xml', 'r')
contents = wd.read()
soup = BeautifulSoup(contents, 'xml')
# Choose appropriate attributes
id = soup.find_all('ns0:employeeID')
email = soup.find_all('ns0:userPrincipalName')
country = soup.find_all('ns0:country')
company = soup.find_all('ns0:company')
data = []
for i in range(0, len(id)):
rows = [email[i].get_text(), country[i].get_text(), company[i].get_text()]
data.append(rows)
# Assign Column names to attributes
ri = pd.DataFrame(data, columns=['Email', 'Country', 'Company'])
ri.to_csv(outpath + 'Report_' + cdt + '.csv', index=False)
csv
*** Как вы Как видите, информация curly.howard неверна. он продолжает записывать атрибуты «страна» и «компания», но пропускает «электронную почту» вместо того, чтобы писать «Нет», как мне нужно.
Если я запущу это как есть, я получу сообщение « IndexError: индекс списка вне диапазона". Это связано с тем, что в «range(0, len(id))» больше записей, чем в «email», поскольку в некоторых из них отсутствует адрес электронной почты. Таким образом, похоже, что каждый столбец создается независимо.
Я надеюсь выполнить итерацию каждого ns0:Report_Entry, и если ns0:sAMAccountName отсутствует, заполнить его "N/ A», или идентификатор переменной, или что-то в этом роде.
Я пробовал использовать «если я не None, сделайте это», но это не работает, или моя логика отключена.
Если кто Если у вас есть какая-либо информация, мы будем очень признательны.
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/789 ... hild-items