我一直在嘗試實作邏輯,但不知道如何開始
我的 xml 如下資料,如果您將子根視為 3 個屬性,如果缺少任何一個屬性,則應按照null這種情況填充它
代碼 :
import xml.etree.ElementTree as ET
xml_data='''
<job_details>
<role>
<name>Vilan</name>
<salary>$5.95</salary>
<job_description>Developer</job_description>
</role>
<role>
<name>Dils</name>
<salary>$7.95</salary>
</role>
<role>
<name>Raj</name>
<job_description>Fullstack Developer</job_description>
</role>
</job_details>
'''
get_root_element = ET.fromstring(xml_data)
out = []
for item in get_root_element:
res = ','.join(x.text for x in item)
out.append(res)
預期產出
['Vilan,$5.95,Developer', 'Dils,$7.95,null' , 'Raj',null,'Fullstack Developer' ]
uj5u.com熱心網友回復:
這是您如何做到這一點的方法。您需要定義所有欄位,然后搜索它們。
編輯
在討論的評論中,我改變了你xml_data的第三個角色,name欄位現在存在,但它沒有值。
import xml.etree.ElementTree as ET
xml_data = """
<job_details>
<role>
<name>Vilan</name>
<salary>$5.95</salary>
<job_description>Developer</job_description>
</role>
<role>
<name>Dils</name>
<salary>$7.95</salary>
</role>
<role>
<name></name>
<job_description>Fullstack Developer</job_description>
</role>
</job_details>
"""
out = []
get_root_element = ET.fromstring(xml_data)
all_fields = set([i.tag for role in get_root_element for i in role])
for item in get_root_element:
tmp = []
for fields in all_fields:
res = item.find(fields)
if res is not None:
if res.text is not None:
tmp.append(res.text)
else:
tmp.append("null")
else:
tmp.append("null")
out.append(",".join(tmp))
print(out)
['Vilan,$5.95,Developer', 'Dils,$7.95,null', 'null,null,Fullstack Developer']
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/481332.html
