❤1👍1👎1
Причина вывода False — разные типы данных:
В Python 3 это принципиально разные типы. Сравнение 𝚜𝚝𝚛 == 𝚋𝚢𝚝𝚎𝚜 всегда возвращает False, даже если они визуально одинаковы, потому что объекты разных типов не равны.
В официальной документации Python указано:
«Байтовые литераты всегда сопровождаются префиксом b, это генерирует объект типа 𝚋𝚢𝚝𝚎𝚜, не 𝚜𝚝𝚛».
«Поддержка устаревшего Unicode-литерала (u'spam') была вновь введена для упрощения поддержки кода, работающего как на Python 2.x, так и на Python 3.x».
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1👎1
Как можно создать текстовый файл Unicode в формате специфической кодировки?
Anonymous Quiz
72%
Передать имя кодировки в open() с параметром encoding
8%
Использовать json с ensure_ascii=False
15%
Применить str.encode() и записать байты в двоичном режиме
5%
Использовать pickle с протоколом 3
❤1👍1👎1
«При работе с JSON-файлами в текстовом формате используйте encoding="utf-8" при открытии файла для чтения и записи».
𝚏 = 𝚘𝚙𝚎𝚗('𝚠𝚘𝚛𝚔𝚏𝚒𝚕𝚎', '𝚠', 𝚎𝚗𝚌𝚘𝚍𝚒𝚗𝚐="𝚞𝚝𝚏-𝟾")
Почему вариант 1 — правильный
Другие варианты (например, str.encode() с записью байтов, использование JSON или pickle) не являются подходящими для создания текстового файла в нужной кодировке — они либо статичны, либо служат для других целей.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1👎1
❤1👍1👎1
«Методы __𝚐𝚎𝚝𝚊𝚝𝚝𝚛__ и __𝚜𝚎𝚝𝚊𝚝𝚝𝚛__ автоматически запускаются, когда экземпляр задействован в контексте, описанном справа в комментарии:
— 𝚍𝚎𝚏 __𝚐𝚎𝚝𝚊𝚝𝚝𝚛__(𝚜𝚎𝚕𝚏, 𝚗𝚊𝚖𝚎): При извлечении неопределённых атрибутов
— 𝚍𝚎𝚏 __𝚜𝚎𝚝𝚊𝚝𝚝𝚛__(𝚜𝚎𝚕𝚏, 𝚗𝚊𝚖𝚎, 𝚟𝚊𝚕𝚞𝚎): При присваивании всех атрибутов
В данном коде:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1👎1