Part 7

Обработка данных

Чтение CSV-файлов

CSV — настолько простой формат, что до сих пор мы работали с ним с помощью собственного кода. Однако в стандартной библиотеке Python есть готовый модуль для работы с CSV-файлами: csv. Он работает так:

import csv

with open("test.csv") as my_file:
    for line in csv.reader(my_file, delimiter=";"):
        print(line)

Код выше читает все строки CSV-файла test.csv, разделяет содержимое каждой строки на список с помощью разделителя ; и выводит каждый список. Поэтому если содержимое строк такое:

012121212;5
012345678;2
015151515;4

код выведет это:

Пример вывода

['012121212', '5'] ['012345678', '2'] ['015151515', '4']

Раз формат CSV такой простой, зачем нужен отдельный модуль, если мы можем просто использовать функцию split? Во-первых, благодаря устройству модуля он будет корректно работать и тогда, когда значения в файле являются строками, которые тоже могут содержать символ-разделитель. Если какая-то строка файла выглядела бы так

"aaa;bbb";"ccc;ddd"

код выше дал бы это:

Пример вывода

['aaa;bbb', 'ccc;ddd']

Функция split также разделила бы данные внутри строк, что, скорее всего, испортило бы данные, а вместе с ними и нашу программу.

Чтение JSON-файлов

CSV — лишь один из многих машиночитаемых форматов данных. JSON — еще один такой формат, и его часто используют, когда данные нужно передавать между приложениями.

JSON-файлы — это текстовые файлы со строгим форматом, который, возможно, чуть менее удобен для человеческого глаза, чем формат CSV. В следующем примере используется файл courses.json, который содержит информацию о некоторых курсах:

[
    {
        "name": "Introduction to Programming",
        "abbreviation": "ItP",
        "periods": [1, 3]
    },
    {
        "name": "Advanced Course in Programming",
        "abbreviation": "ACiP",
        "periods": [2, 4]
    },
    {
        "name": "Database Application",
        "abbreviation": "DbApp",
        "periods": [1, 2, 3, 4]
    }
]

Структура JSON-файла теперь может выглядеть для вас довольно знакомой. JSON-файл выше выглядит точно как список Python, который содержит три словаря Python.

В стандартной библиотеке есть модуль для работы с JSON-файлами: json. Функция loads принимает любой аргумент, переданный в формате JSON, и преобразует его в структуру данных Python. Поэтому обработка файла courses.json кодом ниже

import json

with open("courses.json") as my_file:
    data = my_file.read()

courses = json.loads(data)
print(courses)

вывела бы следующее:

Пример вывода

[{'name': 'Introduction to Programming', 'abbreviation': 'ItP', 'periods': [1, 3]}, {'name': 'Advanced Course in Programming', 'abbreviation': 'ACiP', 'periods': [2, 4]}, {'name': 'Database Application', 'abbreviation': 'DbApp', 'periods': [1, 2, 3, 4]}]

Если бы мы также хотели вывести название каждого курса, можно было бы расширить программу циклом for:

for course in courses:
    print(course["name"])
Пример вывода

Introduction to Programming Advanced Course in Programming Database Application

Loading

Получение файла из интернета

Стандартная библиотека Python также содержит модули для работы с онлайн-содержимым, и одна полезная функция — urllib.request.urlopen. Рекомендуем посмотреть весь модуль, но следующего примера должно быть достаточно, чтобы разобраться с этой функцией. Ее можно использовать для получения содержимого из интернета, чтобы затем обрабатывать его в ваших программах.

Следующий код вывел бы содержимое главной страницы Университета Хельсинки:

import urllib.request

my_request = urllib.request.urlopen("https://helsinki.fi")
print(my_request.read())

Страницы, предназначенные для человеческого глаза, обычно выглядят не очень красиво, когда выводится их код. Однако в следующих примерах мы будем работать с машиночитаемыми данными из онлайн-источника. Большая часть машиночитаемых данных, доступных онлайн, находится в формате JSON.

Loading
Loading
Loading

Поиск модулей

Официальная документация Python содержит информацию обо всех модулях, доступных в стандартной библиотеке:

Помимо стандартной библиотеки, в интернете полно свободно доступных модулей Python для разных целей. Некоторые часто используемые модули перечислены здесь:

Loading
Вы дошли до конца этого раздела! Перейти к следующему разделу:

Текущие баллы можно посмотреть в синем индикаторе в правом нижнем углу страницы.