Python 从XML文件中获取多个元素并将其转换为样式化元素
我是python的初学者(~5个月),目前正在努力弄清楚如何解析被检查为Python 从XML文件中获取多个元素并将其转换为样式化元素,python,xml,python-3.x,csv,Python,Xml,Python 3.x,Csv,我是python的初学者(~5个月),目前正在努力弄清楚如何解析被检查为Yes的种族,将它们转换为代表种族的字母,然后获取所有字母并将它们附加到名为multi_race的新节点 我想到了伪代码: node=tree.findall('race\u white') 对于元素中的元素: 子元素(“是”、“A”) 元素将树写入xml 以下是起始XML: 姓氏 第一 中间的 男性 01/01/1980 是的#代码a #法典 #编解码器 #编码 #编码员 以下是我想要的最终结果: 姓氏 第一 中间
Yes
的种族,将它们转换为代表种族的字母,然后获取所有字母并将它们附加到名为multi_race
的新节点
我想到了伪代码:
node=tree.findall('race\u white')
对于元素中的元素:
子元素(“是”、“A”)
元素将树写入xml
以下是起始XML:
姓氏
第一
中间的
男性
01/01/1980
是的#代码a
#法典
#编解码器
#编码
#编码员
以下是我想要的最终结果:
姓氏
第一
中间的
男性
01/01/1980
A.
您可以迭代应用程序的所有元素,对于带有种族标记的每个元素,保存要添加的对应字母。遍历所有标记后,可以创建一个新元素,将连接的字母作为标记。示例代码:(目前尚未测试)
race_to_letter_map = {
'race_white': 'A',
'race_black': 'B'
# add more races
}
applications = tree.findall('application')
for application in applications:
races = []
elements_to_delete = []
for xml_element in application: # iterate over all elements of application
# check whether the current child indicates one of the races
race_letter = race_to_letter_map.get(xml_element.tag, None)
if race_letter is not None:
elements_to_delete.append(xml_element)
if xml_element.text == 'Yes':
races.append(race_letter)
# removing the now unwanted tags
for xml_element in elements_to_delete:
application.remove(xml_element)
# creating the resulting element and append it to application
multi_race_element = Element('multi_race')
multi_race_element.text = ",".join(races)
application.append(multi_race_element)