{ "cells": [ { "cell_type": "code", "execution_count": 88, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Сегодня поговорим про некоторые полезные модули в стандартной библиотеке\n", "\n", "import re # regular expression - библиотека регулярных выражений" ] }, { "cell_type": "code", "execution_count": 89, "metadata": { "collapsed": false }, "outputs": [], "source": [ "f = open(\"pushkin.txt\") # Этот файл есть на моем компьютере; на вашем - нет\n", "text = f.read()\n", "f.close()" ] }, { "cell_type": "code", "execution_count": 94, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'Я помню чудное мгновенье:\\nПередо мной явилась ты,\\nКак мимолетное виденье,\\nКак гений чистой красоты.\\n\\nВ томленьях грусти безнадежной,\\nВ тревогах шумной суеты,\\nЗвучал мне долго голос нежный\\nИ снились милые черты.\\n\\nШли годы. Бурь порыв мятежный\\nРассеял прежние мечты,\\nИ я забыл твой голос нежный,\\nТвои небесные черты.\\n\\nВ глуши, во мраке заточенья\\nТянулись тихо дни мои\\nБез божества, без вдохновенья,\\nБез слез, без жизни, без любви.\\n\\nДуше настало пробужденье:\\nИ вот опять явилась ты,\\nКак мимолетное виденье,\\nКак гений чистой красоты.\\n\\nИ сердце бьется в упоенье,\\nИ для него воскресли вновь\\nИ божество, и вдохновенье,\\nИ жизнь, и слезы, и любовь.\\n'" ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "text" ] }, { "cell_type": "code", "execution_count": 91, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Я помню чудное мгновенье:\n", "Передо мной явилась ты,\n", "Как мимолетное виденье,\n", "Как гений чистой красоты.\n", "\n", "В томленьях грусти безнадежной,\n", "В тревогах шумной суеты,\n", "Звучал мне долго голос нежный\n", "И снились милые черты.\n", "\n", "Шли годы. Бурь порыв мятежный\n", "Рассеял прежние мечты,\n", "И я забыл твой голос нежный,\n", "Твои небесные черты.\n", "\n", "В глуши, во мраке заточенья\n", "Тянулись тихо дни мои\n", "Без божества, без вдохновенья,\n", "Без слез, без жизни, без любви.\n", "\n", "Душе настало пробужденье:\n", "И вот опять явилась ты,\n", "Как мимолетное виденье,\n", "Как гений чистой красоты.\n", "\n", "И сердце бьется в упоенье,\n", "И для него воскресли вновь\n", "И божество, и вдохновенье,\n", "И жизнь, и слезы, и любовь.\n" ] } ], "source": [ "for line in text.splitlines():\n", " print(line)" ] }, { "cell_type": "code", "execution_count": 97, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "21" ] }, "execution_count": 97, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Обычный поиск подстроки\n", "text.find(\"нье\")" ] }, { "cell_type": "code", "execution_count": 98, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['мгновенье', 'виденье', 'пробужденье', 'виденье', 'упоенье', 'вдохновенье']" ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Попробуем теперь найти все слова по шаблону\n", "re.findall(\"[А-Яа-я]*нье\", text) # любое сочетание русских букв + \"нье\"" ] }, { "cell_type": "code", "execution_count": 99, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Поищем что-нибудь поинтереснее. Например, на страницах в интернете\n", "\n", "import urllib.request" ] }, { "cell_type": "code", "execution_count": 100, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Открываем главную страницу ВШЭ\n", "response = urllib.request.urlopen(\"http://hse.ru\")" ] }, { "cell_type": "code", "execution_count": 101, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# И читаем HTML-содержимое, декодируя его из кодировки utf-8\n", "text = response.read().decode(\"utf-8\")" ] }, { "cell_type": "code", "execution_count": 102, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "347156" ] }, "execution_count": 102, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(text)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'\\n\\n