Языки программирования

Работа с популярными форматами в Python

Python поддерживает работу с различными популярными форматами данных — CSV, JSON.

Работа с CSV-данными

CSV — популярный формат т.к. многие средства импорта/экспорта работают с ним. Данный формат обязан своей популярности MS Excel, которая позволяет сохранять в CSV свои таблицы. Для доступа к CSV-файлам нужно импортировать модуль csv.
Напишем программу, выводящую первые N-строк из CSV файла:
import csv

max = int(input("Сколько строк вывести из файла: "))

k = 0
with open('test.csv') as f:
  f_csv = csv.reader(f)
  headers = next(f_csv)
  for row in f_csv:
    print(row)
    k = k + 1
    if k == max:
      break

input()
В данном примере пользователь должен ввести сколько вывести строк из файла. Далее мы с помощью цикла проходим по всему файлу «test.csv» и выводим строки из этого файла. Переменная row является кортежем.

Чтобы записать CSV-данные, вы можете использовать модуль csv, но создать объект writer. Например:
import csv

headers = ['Symbol', 'Price', 'Date', 'Time']
rows = [('AA', 39, '02/02/2020', '00:00'), ('BB', 36, '03/03/2020', '00:12'), ('CC', 23, '04/05/2020', '12:34')]

with open('test2.csv', 'w') as f:
  f_csv = csv.writer(f)
  f_csv.writerow(headers)
  f_csv.writerows(rows)

input("Файл создан!")
В данном примере мы создаем файл в формате csv. Файл будет выглядеть вот так:

Работа с JSON-данными

Python также обладает поддержкой формата JSON (JavaScript Object Notation). Модуль json предоставляет простой способ кодировать и декодировать данные в JSON. Пример преобразования структуры данных Python в JSON:
import json

data = {
     'name' : 'Max',
     'shares' : 100,
     'count' : 542.20
}
json_str = json.dumps(data)

print(json_str)

input()
Если вы работаете с файлами, а не строками, вы можете использовать функции json.dump() и json.load() для кодирования и декодирования данных. Например:
import json

data = {
     'name' : 'Max',
     'shares' : 100,
     'count' : 542.20
}

# записываем JSON-данные
with open('data.json', 'w') as f:
 json.dump(data, f)

# читаем данные обратно
with open('data.json', 'r') as f:
 data = json.load(f)
 print(data)
 
input()
Данный пример создаст файл «data.json», внесет в него данные и потом прочитает внесенные данные. Самостоятельно проверьте работоспособность данного кода.
JSON-кодирование поддерживает базовые типы данных — None, bool, int, float и str, а также списки, кортежи и словари, состоящие из тех базовых типов.

Работа с XML-данными

XML расшифровывается как eXtensible Markup Language — «расширяемый язык разметки».
XML — стандартизированный, но расширяемый язык текстовой разметки, основанный на удобном и легко читаемом, как пользователями, так и компьютером, синтаксисе, состоящем из тегов, атрибутов и препроцессоров.
Для извлечения данных из простого XML-документа можно использовать модуль xml.etree.ElementTree.
Напишем простую RSS-ленту:
<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>RSS-лента</title>
 <link>https://it-black.ru</link>
 <language>ru</language>
 <dedication>Описание</dedication>
 <item>
   <title>Заголовок 1</title>
   <link>Ссылка 1</link>
   <dedication>Описание 1</dedication>
   <pubDate>Дата 1</pubDate>
 </item>
 <item>
   <title>Заголовок 2</title>
   <link>Ссылка 2</link>
   <dedication>Описание 2</dedication>
   <pubDate>Дата 2</pubDate>
 </item>
</channel>
</rss>
Для извлечения данных из простого XML-документа можно использовать модуль xml.etree.ElementTree. Напишем сценарий, который сделает сводку произвольной RSS-ленты, содержащей элементы title, pubDate, link. Листинг:
from urllib.request import urlopen
from xml.etree.ElementTree import parse

# Загружвем RSS-ленту и парсим её
doc = parse('test.xml')

# Извлекаем и выводим интересующие теги
for item in doc.iterfind('channel/item'):
  title = item.findtext('title')
  date = item.findtext('pubDate')
  link = item.findtext('link')

  print(title)
  print(date)
  print(link)
input()
Функция xml.etree.ElementTree.parse() парсит весь XML-документ в объект документа.

Видео по работе с форматами:
Самоучитель по Python