Руководство по преобразованию XML в CSV с помощью Python.
В отличие от HTML файлы XML имеют собственные теги. На основе этих тегов мы можем выбрать необходимые столбцы для создания CSV.
Этот процесс имеет два преобразования: XML → DICT → CSV.
Пример XML:
<employees> <employee> <name>Carolina</name> <role>Data Engineer</role> <age>24</age> </employee> <employee> <name>Roosaka</name> <role>Data Scientist</role> <age>27</age> </employee> <employee> <name>Kumar</name> <role>Machine Learning Engineer</role> <age>31</age> </employee> <employee> <name>Vijay</name> <role>Devops Engineer</role> <age>26</age> </employee> </employees>
Шаг 1. Импортируйте необходимые пакеты
Установите необходимые пакеты, если будет предложено:
#1 import csv import xmltodict
Шаг 2. Преобразование XML в DICT
#2 # Reading xml file with open("sample.xml", 'r') as file: filedata = file.read() # Converting xml to python dictionary (ordered dict) data_dict = xmltodict.parse(filedata)
Преобразованный dict представляет собой упорядоченный словарь, поэтому следующий код преобразует все упорядоченные элементы dict в dict.
#3 # creating a list of employee data employee_data_list = [dict(x) for x in data_dict["employees"]["employee"]]
Вот как выглядит employee_data_list, мы можем анализировать данные на основе наших необходимых столбцов.
[{'name': 'Carolina', 'role': 'Data Engineer', 'age': '24'}, {'name': 'Roosaka', 'role': 'Data Scientist', 'age': '27'}, {'name': 'Kumar', 'role': 'Machine Learning Engineer', 'age': '31'}, {'name': 'Vijay', 'role': 'Devops Engineer', 'age': '26'} ]
Шаг 3. Преобразование Dict в CSV
Создание заголовков и строк данных о сотрудниках и запись их в файл CSV.
#3 # Selecting headers for CSV HEADERS = [‘name’, ‘role’ ,’age’] rows = [] # Interating through each element to get row data for employee in employee_data_list: name = employee["name"] role= employee["role"] age = employee["age"] # Adding data of each employee to row list rows.append([name,role,age]) #Writing to CSV with open('employee_data.csv', 'w',newline="") as f: write = csv.writer(f) write.writerow(HEADERS) write.writerows(rows)
Вывод:
Данные также можно анализировать с помощью упорядоченного словаря, но для лучшего понимания данных я преобразовал данные в словарь во фрагменте кода #3.
Больше контента на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Получите эксклюзивный доступ к возможностям написания и советам в нашем сообществе Discord.