Python 3.x 将xml文件中的数据提取到数据帧中

Python 3.x 将xml文件中的数据提取到数据帧中,python-3.x,xml,pandas,dataframe,data-extraction,Python 3.x,Xml,Pandas,Dataframe,Data Extraction,我试图从一个xml文件中提取一些数据,下面是该文件的一个示例(它非常大) head()命令告诉我: Processo Despacho Titular Marca Procurador 0 909359539 [[]] [[]] None [] 1 826455069 [[]] [[]] None [] 2 916823270 [[]] [

我试图从一个xml文件中提取一些数据,下面是该文件的一个示例(它非常大)

head()命令告诉我:

     Processo   Despacho    Titular     Marca   Procurador
0   909359539   [[]]      [[]]         None           []
1   826455069   [[]]      [[]]         None           []
2   916823270   [[]]      [[]]         None           []
3   916625303   [[]]      [[]]         None           []
4   916626873   [[]]      [[]]         None           None  
“Processo”运行良好,但“Despacho”、“Titular”和“Procurador”给了我这个括号,“Marca”没有给我数据,都是空值

我把所有的东西都转换成字符串,看看那些括号会变成什么,得到了这个

Processo    Despacho    Titular     Marca   Procurador
0   909359539   <Element 'despachos' at 0x7fb47f082b38>     <Element 'titulares' at 0x7fb47f08e1d8>     None    <Element 'procurador' at 0x7fb47f08e548>
1   826455069   <Element 'despachos' at 0x7fb47f08e5e8>     <Element 'titulares' at 0x7fb47f08e688>     None    <Element 'procurador' at 0x7fb47f08e9f8>
2   916823270   <Element 'despachos' at 0x7fb47f08ea98>     <Element 'titulares' at 0x7fb47f08eb38>     None    <Element 'procurador' at 0x7fb47f08eea8>
3   916625303   <Element 'despachos' at 0x7fb47f08ef48>     <Element 'titulares' at 0x7fb47f099048>     None    <Element 'procurador' at 0x7fb47f0994a8>
4   916626873   <Element 'despachos' at 0x7fb47f099548>     <Element 'titulares' at 0x7fb47f0995e8>     None    None
我得到了这个

Processo       Despacho     Titular     Marca   Procurador
0   909359539   \n           \n         \n     Vaz e Dias Advogados & Associados
1   826455069   \n           \n         \n     CIDWAN UBERLÂNDIA LTDA ME
2   916823270   \n           \n         \n     Wettor - Bureau de Apoio Empresarial S/S Ltda. ME
3   916625303   \n           \n         \n     Lilian de Melo Silveira Advogados Associados S/C
4   916626873   \n           \n         \n     None

现在“Procurador”也在工作,“我在“Marca”中得到了一些数据,但“/n”是怎么回事?xml文件中没有这样的字符串。发生了什么事?

注意:在结束
revista

问题是您没有使代码适应xml文件的结构

您会得到一个
\n
,因为
节点.find('despachos')。text
提供了
despachos
中包含的文本。但是,其中没有真正的文本,只有
\n
后跟空格。Pandas将按原样显示,无需任何解析。您必须应用
节点.find('despachos')。text.rstrip()
以避免这种情况

此外,在
despacho
中,您有一个名为
despacho
的子节点,它是一个封闭的标记,因此也没有文本。但是,它有两个属性
codigo
nome
,您可以将其用作
processo
。例如:

node.find('despachos').find('despacho').attrib.get('nome')
它在第一个节点内找到第一个节点
despacho
,然后提取属性
nome

我以为你想要这样的东西:

将xml.etree.ElementTree作为et导入
作为pd进口熊猫
xtree=et.parse(“test.xml”)
xroot=xtree.getroot()
df_cols=['Processo','Despacho','Titular','Marca','Procurador']
行=[]
对于xroot中的节点:
processo=node.attrib.get('numero')
despacho=node.find('despachos').find('despacho').attrib.get('nome'))
titular=node.find('titulares').find('titular').attrib.get('nome-razao-social'))
marca=node.find('marca').find('nome').text
procurador=node.find('procurador')。文本
附加({'Processo':Processo,'Despacho':Despacho,'Titular':Titular,'Marca':Marca,'Procurador':Procurador})
pd.DataFrame(行、列=df_cols)
名义上的检察官程序 0 909359539高级行政区注册登记中心LTDA DSR高级行政区注册登记中心 1 826455069埃斯科拉赌场登记处-我的赌场登记处-我的赌场登记处
df_cols = ['Processo', 'Despacho', 'Titular', 'Marca', 'Procurador']
rows =[]
for node in xroot:
  processo = node.attrib.get('numero')
  despacho = node.find('despachos').text if node.find('despachos') is not None else None
  titular = node.find('titulares').text if node.find('titulares') is not None else None
  marca = node.find('marca').text if node.find('marca') is not None else None
  procurador = node.find('procurador').text if node.find('procurador') is not None else None

  rows.append({'Processo':processo, 'Despacho':despacho, 'Titular':titular, 'Marca':marca, 'Procurador':procurador})

rpi_df = pd.DataFrame(rows, columns= df_cols)
Processo       Despacho     Titular     Marca   Procurador
0   909359539   \n           \n         \n     Vaz e Dias Advogados & Associados
1   826455069   \n           \n         \n     CIDWAN UBERLÂNDIA LTDA ME
2   916823270   \n           \n         \n     Wettor - Bureau de Apoio Empresarial S/S Ltda. ME
3   916625303   \n           \n         \n     Lilian de Melo Silveira Advogados Associados S/C
4   916626873   \n           \n         \n     None
node.find('despachos').find('despacho').attrib.get('nome')
Processo Despacho Titular Marca Procurador 0 909359539 Concessão de registro DISTRIBUIDORA DE SUPERGELADOS REGIONAIS LTDA DSR DISTRIBUIDORA DE SUPERGELADOS REGIONAIS Vaz e Dias Advogados & Associados 1 826455069 Concessão de registro ESCOLA CASINHA BRANCA DE UBERLÂNDIA LTDA-ME CASINHA BRANCA CIDWAN UBERLÂNDIA LTDA ME