我有一个xml文件,如下所示:
<records>
<record>
<device_serial_number>PAD203146024</device_serial_number>
<device_serial_number_2>203146024</device_serial_number_2>
<docsis_mac>6412695EB9BB</docsis_mac>
</record>
<record>
<device_serial_number>PAD206024</device_serial_number>
<device_serial_number_2>20324</device_serial_number_2>
<docsis_mac>6412BB</docsis_mac>
</record>
</records>我在python中使用ETree读取了这个xml文件,并且工作得很好,现在我想检查标记是否有以"PAD“开头的文本,如果它已经输出它,如下所示:
Expected output
<record>
<device_serial_number>PAD203146024</device_serial_number>
<device_serial_number_2>203146024</device_serial_number_2>
<docsis_mac>6412695EB9BB</docsis_mac>
</record>发布于 2017-09-27 18:19:45
import xml.etree.ElementTree as ET
recs=[ET.tostring(c) for c in record if c.find('device_serial_number').text[:3]=='PAD']
for rec in recs:
print(rec)上面的record是for循环中的record元素,如您的问题所示。只有当 'device_serial_number'以PAD开头时才会返回记录,如下所示:
<record>
<device_serial_number>PAD203146024</device_serial_number>
<device_serial_number_2>203146024</device_serial_number_2>
<docsis_mac>6412695EB9BB</docsis_mac>
</record>
<record>
<device_serial_number>PAD206024</device_serial_number>
<device_serial_number_2>20324</device_serial_number_2>
<docsis_mac>6412BB</docsis_mac>
</record>如果任何记录元素都没有将device_serial_number作为子元素,那么我将使用以下内容:
from xml.etree import ElementTree as ET
from xml.dom.minidom import parseString
tree = ET.parse('C:\\Use\\CO.xml')
root = tree.getroot()
for record in root.findall('records'):
recs=[c for c in t if c.find('device_serial_number')!=None and c.find('device_serial_number').text[:3]=='PAD']
for rec in recs:
print(parseString(ET.tostring(rec)).toprettyxml(''))https://stackoverflow.com/questions/46454387
复制相似问题