Я пытаюсь извлечь некоторые данные из файла xml, вот пример из файла (он довольно большой).
```<?xml version="1.0" encoding="UTF-8" ?>
<revista numero="2558" data="14/01/2020">
<processo numero="909359539" data-deposito="11/05/2015" data-concessao="14/01/2020" data-vigencia="14/01/2030">
<despachos>
<despacho codigo="IPAS158" nome="Concessão de registro"/>
</despachos>
<titulares>
<titular nome-razao-social="DISTRIBUIDORA DE SUPERGELADOS REGIONAIS LTDA" pais="BR" uf="SP"/>
</titulares>
<marca apresentacao="Mista" natureza="De Serviço">
<nome>DSR DISTRIBUIDORA DE SUPERGELADOS REGIONAIS</nome>
</marca>
<classes-vienna edicao="4">
<classe-vienna codigo="24.1.15"/>
<classe-vienna codigo="27.5.1"/>
</classes-vienna>
<lista-classe-nice>
<classe-nice codigo="35">
<especificacao>Administração de negócios, comercialização através de qualquer meio de produtos alimentícios, em especial, picolé, sorvetes, gelados comestíveis, sobremesas congeladas; franchising; representação comercial; serviços de distribuição, representação, importação e exportação de produtos alimentícios, em especial, picolé, sorvetes, gelados comestíveis, sobremesas congeladas; assessoria em gestão comercial ou industrial.; </especificacao>
<status>Deferido</status>
</classe-nice>
</lista-classe-nice>
<procurador>Vaz e Dias Advogados & Associados</procurador>
</processo>
<processo numero="826455069" data-deposito="12/03/2004" data-concessao="14/01/2020" data-vigencia="14/01/2030">
<despachos>
<despacho codigo="IPAS158" nome="Concessão de registro"/>
</despachos>
<titulares>
<titular nome-razao-social="ESCOLA CASINHA BRANCA DE UBERLÂNDIA LTDA-ME" pais="BR" uf="MG"/>
</titulares>
<marca apresentacao="Mista" natureza="De Serviço">
<nome>CASINHA BRANCA</nome>
</marca>
<classes-vienna edicao="4">
<classe-vienna codigo="7.1.8"/>
<classe-vienna codigo="27.5.1"/>
</classes-vienna>
<lista-classe-nice>
<classe-nice codigo="41">
<especificacao>escola maternal, jardim e pré escola (ensino infantil).; </especificacao>
<status>Deferido</status>
</classe-nice>
</lista-classe-nice>
<procurador>CIDWAN UBERLÂNDIA LTDA ME</procurador>
</revista> ```
Выделенные области - это данные, которые я хочу получить
Итак, вот мой код:
xtree = et.parse("/content/drive/My Drive/data/INPI/RM2558.xml")
xroot = xtree.getroot()df_cols = ['Processo', 'Despacho', 'Titular', 'Marca', 'Procurador']
rows =[]
for node in xroot:
processo = node.attrib.get('numero')
despacho = node.find('despachos')
titular = node.find('titulares')
marca = node.find('nome')
procurador = node.find('procurador')
rows.append({'Processo':processo, 'Despacho':despacho, 'Titular':titular, 'Marca':marca,'Procurador':procurador})
rpi_df = pd.DataFrame(rows, columns= df_cols)
Команда 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
Так что я думаю, что это адреса данных в файле xml, верно?
Моя следующая попытка была такой:
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
Теперь «Procurador» также работает «и я получаю некоторые данные» Marca ", но что с" / n "? Нигде в файле xml нет такой строки. Что происходит?