Руководство по преобразованию 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.