@ro25man

Почему некорректно формируется csv?

Здравствуйте. Что не так с моим кодом? Парсю xml в csv, выбрал все нужные мне теги. Когда открываю мой csv файл, получается смещение строк. Он растёт у меня по вертикали. Пример на изображении ниже
5cd86a9335ff4e6a9ddb790fa30187d3.png
И чем больше тегов в заголовке таблицы, тем ниже текст из тегов смещается по вертикали.
Пример кода:
for place in root.findall('Place'):
    for identity in place.findall('Identity'):
        row0 = {}
        for placeid in identity.findall('PlaceId'):
            header.add(placeid.tag)
            row0[placeid.tag] = placeid.text
        places_data.append(row0)
for place in root.findall('Place'):
  for locationlist in place.findall('LocationList'):
    for location in locationlist.findall('Location'):
        for address in location.findall('Address'):
            for parsed in address.findall('Parsed'):
                row1 = {}
                for countrycode in parsed.findall('CountryCode'):
                    header.add(countrycode.tag)
                    row1[countrycode.tag] = countrycode.text
                    places_data.append(row1)
  • Вопрос задан
  • 301 просмотр
Решения вопроса 1
Ba1t
@Ba1t
Потому что вы торопитесь добавить ряд в "places_data". В начале собрали все "PlaceId" и добавили их в "places_data", потом все "CountryCode"... (повторяете для каждого заголовка) от этого и получается такая "лестница".
Кажется это должно сработать:
for place in root.findall('Place'):
    row = {}

    for identity in place.findall('Identity'):
        for placeid in identity.findall('PlaceId'):
            header.add(placeid.tag)
            row[placeid.tag] = placeid.text
            
    for locationlist in place.findall('LocationList'):
        for location in locationlist.findall('Location'):
            for address in location.findall('Address'):
                for parsed in address.findall('Parsed'):
                    for countrycode in parsed.findall('CountryCode'):
                        header.add(countrycode.tag)
                        row[countrycode.tag] = countrycode.text
    places_data.append(row)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы