添加到元素到标头

2024-09-24 22:25:13 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的代码指向标题名Phones,并将每个元素解析为csv文件。这是为该文件夹中的每个XML文件完成的。这意味着来自所有这些XML文件的事实的所有元素都被解析为一个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将它们与一个\uu组合在一起,并将它们解析为标题为**PLAN**的第一列

输出应该如下所示 Picture here


Tags: 文件csvtotextinimport元素df
1条回答
网友
1楼 · 发布于 2024-09-24 22:25:13

如果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')])

相关问题 更多 >