{ "cells": [ { "cell_type": "markdown", "id": "reported-grant", "metadata": {}, "source": [ "## Exercise\n", "\n", "Read and write a CSV file containing:\n", "\n", "
\n", "artist,song,length\n", "ZZ Top,La Grange,3:50\n", "Iron Butterfly,In-A-Gadda-Da-Vida,17:04\n", "Led Zeppelin,Whole Lotta Love,5:33\n", "" ] }, { "cell_type": "code", "execution_count": 4, "id": "frank-midnight", "metadata": {}, "outputs": [], "source": [ "text = '''artist,song,length\n", "ZZ Top,La Grange,3:50\n", "Iron Butterfly,In-A-Gadda-Da-Vida,17:04\n", "Led Zeppelin,Whole Lotta Love,5:33\n", "'''\n", "\n", "with open('some_csv.csv', 'w') as file:\n", " file.write(text)" ] }, { "cell_type": "code", "execution_count": 7, "id": "afraid-involvement", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "artist,song,length\n", "ZZ Top,La Grange,3:50\n", "Iron Butterfly,In-A-Gadda-Da-Vida,17:04\n", "Led Zeppelin,Whole Lotta Love,5:33\n", "\n" ] } ], "source": [ "with open('some_csv.csv', 'r') as file:\n", " print(''.join(file.readlines()))\n" ] }, { "cell_type": "code", "execution_count": 25, "id": "alike-sigma", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Header ['artist', 'song', 'length']\n", "1 ['ZZ; Top', 'La Grange', '3:50']\n", "2 ['Iron Butterfly', 'In-A-Gadda-Da-Vida', '17:04']\n", "3 ['Led Zeppelin', 'Whole Lotta Love', '5:33']\n" ] } ], "source": [ "import csv\n", "\n", "with open('some_csv.csv', 'r') as file:\n", " csv_in = csv.reader(file, delimiter=';')\n", " header = next(csv_in)\n", " print('Header', header)\n", " for i, row in enumerate(csv_in, start=1):\n", " print(i, row)" ] }, { "cell_type": "code", "execution_count": 19, "id": "educational-connecticut", "metadata": {}, "outputs": [], "source": [ "data = [\n", " ['artist', 'song', 'length'],\n", " ['ZZ; Top', 'La Grange', '3:50'],\n", " ['Iron Butterfly', 'In-A-Gadda-Da-Vida', '17:04'],\n", " ['Led Zeppelin', 'Whole Lotta Love', '5:33']\n", "]\n", "\n", "with open('some_csv.csv', 'w', newline='') as file:\n", " csv_out = csv.writer(file, delimiter=';')\n", " for row in data:\n", " csv_out.writerow(row)" ] }, { "cell_type": "markdown", "id": "korean-radiation", "metadata": {}, "source": [ "## Exercise\n", "\n", "Save the following to a JSON file:\n", "\n", "```\n", "[\n", " {'id': 42, 'value': 'Something exciting'},\n", " {'value': 'Also exciting news', 'id': 7}\n", "]\n", "```" ] }, { "cell_type": "code", "execution_count": 32, "id": "rental-pennsylvania", "metadata": {}, "outputs": [], "source": [ "import json\n", "\n", "data = (\n", " {'id': 42, 'value': 'Something exciting'},\n", " {'value': 'Also exciting news', 'id': 7}\n", ")\n", "\n", "with open('some_json.json', 'w') as file:\n", " json.dump(data, file, indent=4, sort_keys=True)" ] }, { "cell_type": "code", "execution_count": 35, "id": "strange-netherlands", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[{'id': 42, 'value': 'Something exciting'}, {'id': 7, 'value': 'Also exciting news'}]\n", "Also exciting news\n" ] } ], "source": [ "with open('some_json.json', 'r') as file:\n", " data = json.load(file)\n", "print(data)\n", "print(data[1]['value'])" ] }, { "cell_type": "code", "execution_count": 40, "id": "international-accident", "metadata": {}, "outputs": [], "source": [ "import pickle\n", "\n", "data = (\n", " {'id': 42, 'value': 'Something exciting'},\n", " {'value': 'Also exciting news', 'id': 7}\n", ")\n", "\n", "with open('some_pickle.pickle', 'wb') as file:\n", " pickle.dump(data, file)" ] }, { "cell_type": "code", "execution_count": 42, "id": "developmental-feature", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "({'id': 42, 'value': 'Something exciting'}, {'value': 'Also exciting news', 'id': 7})\n" ] } ], "source": [ "\n", "with open('some_pickle.pickle', 'rb') as file:\n", " new_data = pickle.load(file)\n", "print(new_data)" ] }, { "cell_type": "code", "execution_count": 45, "id": "finnish-ordinary", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "b'\\x80\\x04\\x95J\\x00\\x00\\x00\\x00\\x00\\x00\\x00}\\x94(\\x8c\\x02id\\x94K*\\x8c\\x05value\\x94\\x8c\\x12Something exciting\\x94u}\\x94(h\\x02\\x8c\\x12Also exciting news\\x94h\\x01K\\x07u\\x86\\x94.'\n", "128 4 149 74 0 0 0 0 0 0 0 125 148 40 140 2 105 100 148 75 42 140 5 118 97 108 117 101 148 140 18 83 111 109 101 116 104 105 110 103 32 101 120 99 105 116 105 110 103 148 117 125 148 40 104 2 140 18 65 108 115 111 32 101 120 99 105 116 105 110 103 32 110 101 119 115 148 104 1 75 7 117 134 148 46 " ] } ], "source": [ "with open('some_pickle.pickle', 'rb') as file:\n", " bytes = file.read()\n", "print(bytes)\n", "for byte in bytes:\n", " print(byte, end=' ')" ] }, { "cell_type": "markdown", "id": "aggregate-vermont", "metadata": {}, "source": [ "## Exercise\n", "\n", "XML - Open Street Map\n", "\n", "Download a small map from www.openstreetmap.org as XML and plot it using matplotlib." ] }, { "cell_type": "code", "execution_count": 48, "id": "higher-lover", "metadata": {}, "outputs": [], "source": [ "import xml.etree.ElementTree as ET\n", "\n", "tree = ET.parse('map.osm')\n", "root = tree.getroot()" ] }, { "cell_type": "code", "execution_count": 93, "id": "stupid-bhutan", "metadata": {}, "outputs": [], "source": [ "points = {}\n", "for child in root:\n", " if child.tag == 'node':\n", " point_id, lat, lon = child.attrib['id'], float(child.attrib['lat']), float(child.attrib['lon'])\n", " points[point_id] = (lat, lon)" ] }, { "cell_type": "code", "execution_count": 74, "id": "saved-filing", "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 101, "id": "brown-brazilian", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "