Олег Марков
Использование Unicode в Python
Введение
Unicode — стандарт кодирования символов, обеспечивающий поддержку большинства письменностей мира. В Python Unicode используется для хранения и обработки текстовых данных, включая буквы, цифры, специальные символы и эмодзи.
В этой статье мы разберемся, как работать с Unicode в Python, правильно кодировать и декодировать строки, использовать символы и выполнять текстовые операции.
Если вы хотите детальнее изучить работу с текстовыми данными, кодировками и строками в Python — приходите на наш курс Основы Python. На курсе 209 уроков и 34 упражнения, AI-тренажеры для практики с кодом и задачами 24/7, решение задач с живым ревью наставника, еженедельные встречи с менторами.
Строки и Unicode
В Python 3 все строки (str) по умолчанию используют Unicode:
s = "Привет, мир 🌍"
print(s)Каждый символ в строке представлен Unicode-кодом, который можно получить функцией ord:
print(ord("П")) # 1055
print(ord("🌍")) # 127757И наоборот, получить символ из кода можно через chr:
print(chr(1055)) # П
print(chr(127757)) # 🌍Кодировка и декодирование
Для работы с байтовыми данными используется кодировка и декодирование:
text = "Привет"
# Кодируем в bytes
encoded = text.encode("utf-8")
print(encoded) # b'\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'
# Декодируем обратно
decoded = encoded.decode("utf-8")
print(decoded) # ПриветPython поддерживает различные кодировки: utf-8, utf-16, cp1251 и другие.
Unicode в регулярных выражениях
Unicode важно учитывать при поиске и обработке текста:
import re
text = "Привет мир"
pattern = r"\w+" # \w учитывает Unicode буквы в Python 3
matches = re.findall(pattern, text)
print(matches) # ['Привет', 'мир']Для старых версий Python или специфических паттернов можно использовать флаг re.UNICODE.
Частые ошибки
- Попытка работать с байтами как со строками →
TypeError. - Декодирование в неправильной кодировке →
UnicodeDecodeError. - Игнорирование эмодзи или спецсимволов при подсчёте длины строки →
lenучитывает символы Unicode правильно, но отдельные графемы могут быть сложными.
Часто задаваемые вопросы
Как узнать кодировку файла? Python не определяет автоматически. Используйте модуль
chardetдля определения кодировки.Можно ли обрезать строку по символам Unicode? Да, обычный срез работает корректно:
s = "Привет 🌍"
print(s[:7]) # Привет- Как работать с Emoji в Python?
Emoji — это Unicode символы, можно использовать
len,ord,chrи работать как со строками:
emoji = "🌍"
print(ord(emoji)) # 127757- Как записывать Unicode в файл?
with open("file.txt", "w", encoding="utf-8") as f:
f.write("Привет 🌍")Заключение
Использование Unicode в Python обеспечивает поддержку текстовых данных на разных языках и специальных символов. Важно правильно кодировать и декодировать строки, учитывать особенности символов при обработке текста и использовать встроенные функции для работы с кодами символов.
Для системного изучения работы с текстовыми данными, строками и Unicode в Python рекомендую пройти курс Основы Python. В первых 3 модулях уже доступно бесплатное содержание — начните погружаться в мир Python прямо сегодня.
Постройте личный план изучения Python до уровня Middle — бесплатно!
Python — часть карты развития Backend
100+ шагов развития
30 бесплатных лекций
300 бонусных рублей на счет
Все гайды по Python
Лучшие курсы по теме

Основы Python
Антон Ларичев
Nest.js с нуля
Антон Ларичев