@Panda_Code
Сognizer

Как записать данные, идущие паралельно друг другу?

Ребята, всем доброго времени суток!

Есть некий xml файл, из которого мне необходимо взять данные и записать в csv файл.
Как вы уже поняли, данные должны идти напротив друг друга.
У меня получается только так:5fa9185931950780124409.jpeg

Вот мой код:
from bs4 import BeautifulSoup as bs
import csv

# открываем xml, читаем и сохраняем в переменную, содержимое файла
with open('continents.xml', 'r', encoding='utf-8') as file:
    content = file.read()
    soup = bs(content, 'lxml')

# создаем файл csv и записываем данные из xml
with open('continents.csv', 'w', newline='', encoding='utf-8') as csvfile:
    fieldnames = ['Name', 'FCode']  # создаем 2 столбца
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()

    # надо записать данные, идущие паралелльно друг другу
    for elem in soup.find_all('name'):
        writer.writerow({'Name': elem.get_text()})

    for elem in soup.find_all('fcode'):
        writer.writerow({'FCode': elem.get_text()})
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
@javedimka
Хочу сока
А как ты думаешь, почему они у тебя не идут параллельно друг другу? Потому что у тебя два цикла которые пишут строки друг за другом, с чего бы второму циклу вернуться в начало файла.
Вот метод writerow одним своим названием не подсказывает, что данные нужно сгруппировать?

Советую прочитать документацию.

for name_elem, fcode_elem in zip(soup.find_all('name'), soup.find_all('fcode')):
    writer.writerow({'Name': name_elem.get_text(), 'FCode': fcode_elem.get_text()})
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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