for i in range(1,N):
#Прочитываем в формате xml и записываем в файл, чтобы потом его распарсить
with client.settings(raw_response = True):
w = client.service.GetCompanyStructure({'Inn' : INN[i]})
#print(q.text)
g = open('Result_inn1.xml', 'w', encoding="utf-8")
g.write(w.text)
g.close
docx = etree.parse(r'Result_inn1.xml')
# корневой элемент
root = docx.getroot()
# получаем глубину вложенности для каждого элемента
def depth_iter(docx,tag=None,number=None,text=None):
stack = []#список
stack.append(iter([root]))
while stack:
e = next(stack[-1], None)
if e == None:
stack.pop()
else:
stack.append(iter(e))
if tag == None or e.tag == tag:
yield (e,e.tag, stack.__len__()-1,e.text)
#запускаем итератор
a= depth_iter(docx)
st=[]
b=0
for i in a:
st.append([])
#st[b,0]=str(i[0])
#st[b,1]=str(i[1])
st[b].append(i[0])
st[b].append(i[1])
st[b].append(i[2])
st[b].append(i[3])
b=b+1
for q in range(0,len(my_tables)):
i=0
number_of_table=0 #счетчик таблиц с названием table_name и заданной глубиной
column=[]
#находим все названия полей таблицы и записываем в массив
while i<len(st):
fulltag=st[i][1]
obj=fulltag.split('}')
depth=st[i][2]
if obj[1] == my_tables[q] and depth == table_depth:
number_of_table+=1
#print('Table name:\n',obj[1],'\nFields:')
a=i+1
if (a+1) == len(st):
break
while (st[a][2] > (table_depth)) and (a < (len(st))):
while (st[a][2] == (table_depth+1)):
fulltag=st[a][1]
obj=fulltag.split('}')
d=0
for b in range(len(column)):
if obj[1] != column[d]:
d+=1
if d == len(column):
column.append(obj[1])
#attr.append(st[a][3])
#print(obj[1],':',st[a][3])
if (a+1) == len(st):
break
a=a+1
if (a+1) == len(st):
break
a=a+1
#attr.append(st[a][3])
i+=1
#print(column)
#print(len(column))
#print(number_of_table)
#Заполняем массив данных NULL
atribute = [['NULL' for x in range(len(column))] for y in range(number_of_table)]
#print(atribute)
number_of_cells=0
for i in range(len(st)):
fulltag=st[i][1]
obj=fulltag.split('}')
depth=st[i][2]
if obj[1] == my_tables[q] and depth == table_depth:
a=i+1
if (a+1) == len(st):
break
while (st[a][2] > (table_depth)) and (a < (len(st))):
while (st[a][2] == (table_depth+1)):
fulltag=st[a][1]
obj=fulltag.split('}')
d=0
for b in range(len(column)):
if obj[1] == column[d]:
atribute[number_of_cells-1][d]=st[a][3]
d+=1
if (a+1) == len(st):
break
a+=1
if (a+1) == len(st):
break
a+=1
if (number_of_cells) == number_of_table:
break
number_of_cells+=1
df = pd.DataFrame(columns = column, data = atribute)
df[q]=pd.concat([df_[q],df], ignore_index=True)
Скрипт который создает q таблиц в цикле и записывает их в массив. Я хочу чтобы соответсвующие таблицы сразу объединялись, но у меня не получается
хочу чтобы суть была такая: df[q]=pd.concat([df_[q],df], ignore_index=True)
Но это не работает.
Подскажите что делать, пожалуйста