下面的代码转到标题名称Phones,并将每个元素解析为csv文件。对于该文件夹中的每个XML文件都将完成此操作。意味着所有这些XML文件中的FACTS的所有元素都被解析为一个CSV文件。
这是代码
import xml.etree.cElementTree as cET
import pandas as pd
from pathlib import Path
def phones_to_df(fname):
tree = cET.parse(fname)
return pd.DataFrame([{**{el.tag: el.text for el in list(phone)},
**{f'nuk_{k}': v for k, v in phone.find('nuk').items()}}
for phone in tree.iterfind('Phones')])
if __name__ == '__main__':
xmls = [f for f in Path('C:/Users/Desktop/Original/test').glob('*.xml')]
df = pd.concat([phones_to_df(xml) for xml in xmls])
df.to_csv("C:/Users/Desktop/Original/all.csv")
这是XML文件的外观
<Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Phones>
<Date />
<Prog />
<Box />
<Feature />
<PR>1231</PR>
<Set>234234</Set>
<FD>23423</FD>
<Reno>454</Reno>
<Simple>dfasd</Simple>
<Nr />
<gt>6070106091</gt>
<Reno>1233</Reno>
<QW>3234</QW>
<ER />
<VR />
<Use />
<Dar>sdfsd</Dar>
<age />
<name1>sdfsfdfs</name1>
<Sys>Itone</Sys>
<aac>2014</aac>
<time>02:00</time>
<nuk name="This is some text" text_g="asadsdas" text_h="2">fsdfsfd3432fdf</nuk>
</Phones>
</Data>
我正在努力在此代码中实现新功能。我想编码以获得元素PR和元素Reno以及_并将它们解析为标题为** PLAN **
的第一列输出应如下所示Picture here
提供Phones
中的节点是唯一的,您可以修改要构建的字典以创建添加所需的额外列的数据框:
def phones_to_df(fname):
tree = cET.parse(fname)
return pd.DataFrame([{'PLAN': f'{phone.find("PR").text}_{phone.find("Reno").text}',
**{el.tag: el.text for el in phone},
**{f'nuk_{k}': v for k, v in phone.find('nuk').items()}
}
for phone in tree.iterfind('Phones')])