У меня есть длинный XML документ, который структурирован следующим образом:Синтаксический XML с Python ElementTree
<carrierData>
<inspections>
<inspection inspection_date="2013-01-16" report_state="TX" report_number="TX130G0ELJ05" level="1" time_weight="1">
<drivers>
<driver driver_type="Primary Driver" first_name="JOHN" last_name="SMITH" date_of_birth="1962-11-20" license_state="TX" License_number="12345678"/>
<driver driver_type="CoDriver"/>
</drivers>
<vehicles>
<vehicle unit="1" vehicle_id_number="2HSCAAXN02C039269" unit_type="Truck Tractor" license_state="TX" license_number="1B13577"/>
<vehicle unit="2" vehicle_id_number="1GRAA76228S702393" unit_type="Semi-Trailer" license_state="TX" license_number="X99757"/>
</vehicles>
<violations>
<violation code="393.11" description="No/defective lighting devices/reflective devices/projected" oos="N" time_severity_weight="3" BASIC="Vehicle Maint."/>
<violation code="393.53(b)" description="Automatic brake adjuster CMV manufactured on or after 10/20/1994 - air brake" oos="N" time_severity_weight="4" BASIC="Vehicle Maint."/>
<violation code="393.47(e)" description="Clamp/Roto-Chamber type brake(s) out of adjustment" oos="N" time_severity_weight="4" BASIC="Vehicle Maint."/>
<violation code="396.3(a)(1)" description="Inspection/repair and maintenance parts and accessories" oos="N" time_severity_weight="2" BASIC="Vehicle Maint."/>
</violations>
</inspection>
мне нужно перебирать список номеров отчета проверки и печати первой и фамилию каждого водителя, связанного с каждый номер в списке. Я использую ElementTree Python для разбора XML, и хотя я не получаю сообщение об ошибке на код ниже, он не дает мне никаких результатов либо:
import xml.etree.ElementTree as ET
codes = ['TX3YZ8HQE1X1', 'TX3YAEHQE15W', 'KS00YQ008857', 'TX43D99DAN33', 'NM3267100378',
'COPF31000853', 'TX3ZYF0MUQ6F', 'TX3ZFC0MHXLU', 'TX3Z760MGU0H', 'TX3YGG0MUQ1R',
'TX3YBD0MUI0A', 'TX3XPF0MKQYG', 'TX3X8F0MHXA7', 'AZ0160001581', 'TX3WC40ADYGZ',
'ID6300005350', 'TX3VV50ADUOI', 'TX137S0ELO02', 'UTCE03208119', 'UTCE03208119',
'TX3UTG0MJKDL', 'TX3UD60MIJU5', 'TX13690EBI05', 'TX3U4E0AFA94', 'TX3U4E0AFA94',
'TX3T5F0MIJMH', 'TX13550BKL02', 'TX3SLE0MIJGZ', 'TX3SLE0MIJGZ', 'TX3S8D0AFH3D',
'UTCE03207947', 'TX133Q0ENG01', 'TX133Q0ENG01', 'TX133Q0ENG01', 'TX3REM0MHEK3',
'ID0000169042', 'COPF05000200', 'TX13280EPV0B', 'TX131S9DAB02', 'CO1E19000017',
'TX3PD60WAA4L', 'TX1317W1NW07', 'CO2D02000044', 'LALAEQ001266', 'TX130H0EBT06',
'TX3NW10ABLMK', 'NV7233010192', 'NV4045000998', 'CO3301000406', 'CO5C01000218',
'TX12949DBU03', 'FL1619000314', 'TX12929DIE02', 'TX128X0AAP01', 'TX128A9DHA07',
'CO2B01000061', 'TX1274W1DV01', 'TX126Z9DCM01', 'TX127U9DBV01', 'TX127U9DBV01',
'TX127R9DIZ02', 'TX127K9DCQ06', 'AZ0YDG000141', 'NV7196001031', 'TX126B0FJZ01',
'TX126I9DAN01', 'LALACV003777', 'CO2B12000014', 'TX12650HTB01', 'ID0000220955']
tree = ET.parse("C:\All_BASICs_07-25-2014.xml")
root = tree.getroot()
for x in codes:
for node in tree.iter('inspection'):
if ['report_id'] == [x]:
name = node.attrib.get('first_name','last_name')
print name
Я программирование новичку, так что я может отсутствовать что-то явно очевидное здесь, но без ошибки ссылаться, у меня возникают проблемы с поиском проблемы.
Спасибо, сэр! Вот так! У меня был правильный атрибут «report_number» в моем коде, но я думаю, что там был «report_id», когда я впервые набрал его, поэтому извините за путаницу. В противном случае это дало мне именно то, что мне было нужно, и, увидев ответы, я дал мне гораздо более точное представление о том, что я пытался сделать. Использование функции set() было также предложено выше, и я реализовал это с большим эффектом. Еще раз спасибо! – jerodestapa