В python есть 2 объекта работающими с текстом: unicode и str, объект unicode хранит символы в формате (кодировке) unicode, объект str является набором байт/символов в которых python хранит остальные кодировки (utf8, cp1251, cp866, koi8-r и др). Если перед строкой добавить символ u, то при запуске скрипта, эта байтовая строка будет декодирована в unicode из кодировки указанной в начале. Мне нужно получить источник страницы html и преобразовать его в uft8, потому что я хочу найти текст на этой странице например, если my_same_text в page_source then.
Работа с файлами в Python
В этом и последующих уроках мы подробно разберем работу с файлами при помощи встроенных средств Python. Научимся правильно открывать, закрывать файлы, а так же читать и записывать в них.
Для начала создадим файл с любым именем, например, file.txt в папке с проектом и откроем его при помощи Python в режиме чтения. Для открытия файла в Python существует функция open() :
В нашем примере функция open() принимает два аргумента: путь до файла и режим, в котором открывается файл. Можно так же явно указать, что второй аргумент является именно режимом:
Пока не будем вдаваться в подробности использования второго примера, вместо первого. Вернемся к этому вопросу в подразделе «Кодировка».
Аргумент r означает, что файл будет открыт только в режиме чтения. Далее представлены возможные режимы:
- r – открытие файла для чтение (используется по умолчанию);
- w – открытие файла для записи, при этом все содержимое файла удаляется, а в случае отсутствия файла по указанному пути, он создается;
- x – создание нового файла для записи (если файл уже существовал, то возникнет исключение);
- a – открытие файла для записи, при этом содержимое не удаляется, а новая информация добавляется в конец файла;
- b – открытие файла в бинарном режиме;
- t – открытие файла в текстовом режиме (используется по умолчанию);
- + — открытие файла для чтения и записи.
Перечисленные выше режимы открытия файла можно комбинировать. По умолчанию файл открывается в режиме чтения текста, то есть пример открытия файла в режиме чтения можно было написать проще:
Отлично, мы открыли файл. Теперь необходимо его прочитать и, например, вывести в консоль. Функция open() возвращает объект класса _io.TextIOWrapper :
Объект класса _io.TextIOWrapper имеет атрибуты name , mode и closed , возвращающие имя файла, режим, в котором он открыт и закрыт ли он, соответственно.


46. Работа с файлами в Python — Знакомство с Python — codebra
Путь до файла в Python
Мы открыли файл, который расположен в той же директории, что и файл с программой. Такое случается далеко не всегда. В этом подразделе разберемся более подробно с путем до файла в Python.
Чтобы получить абсолютный путь до файла, необходимо подключить библиотеку os . В классе path есть метод abspath() , который возвращает абсолютный путь до файла указанного в аргументе:
Теперь мы можем открыть файл, используя абсолютный путь (только необходимо заменить слеши \ на / ):
Или использовать спецификатор r , который указывает на использование строки в «сыром» виде (нечто похожее мы встречали в уроке 2.4.):
С абсолютными путями разобрались, но как открыть файл, если он расположен в папке на уровень выше или ниже. Если на одном уровне с файлом программы расположена папка, например, folder и необходимый файл находится в ней, то, чтобы открыть файл, следует использовать такой относительный путь:
Если файл находится выше на одну директорию, то необходимо использовать обозначение « ../ »:
С распространением компьютеров, разным странам понадобились свои, более широкие таблицы. В том числе для кириллических букв, восточных иероглифов, арабской вязи, дополнительных математических и типографских символов, а впоследствии даже для эмодзи-смайликов. Эта кодировка хороша тем что для хранения текста она занимает оптимальное кол-во памяти и с помощью её можно закодировать почти все языки мира в отличие от cp1251 и подобных однобайтовых кодировок. w открытие файла для записи, при этом все содержимое файла удаляется, а в случае отсутствия файла по указанному пути, он создается;.
Задание
В Python можно «запросить» и вывести на экран любой символ из кодировки ASCII. Для этого используется функция chr() . Например:
На экран выведется символ с номером 63 — вопросительный знак ? . Таким способом можно выводить любой символ.
Воспользуйтесь таблицей кодов ASCII. В этой таблице нас интересует десятичный код (dec или decimal), которыми кодируются символы.
Используя пример выше и таблицу, выведите на экран (каждый на своей собственной строке) ~ , ^ и % .
(Конечно, можно «обмануть» тесты и просто сделать print(‘~’) и т.д., но так будет совсем неинтересно 🙂
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
- Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.

Глава 4. Строки
Содержание статьи