Python - Система Юникода

Привет, будущие волшебники Python! Сегодня мы отправляемся в захватывающее путешествие в мир Юникода в Python. Не волнуйтесь, если вы раньше не слышали о Юникоде – к концу этого урока вы сможете работать с текстом как профессионал!

Python - Unicode System

Что такое система Юникода?

Представьте себе, что вы пытаетесь написать письмо своему другу в Японию, но ваша клавиатура поддерживает только английские буквы. Уныло, правда? И именно здесь на помощь приходит Юникод!

Юникод – это как огромный словарь, который назначает уникальное число (называемое кодовой точкой) каждому символу в каждой языковой системе мира. Это не только буквы и цифры – это включает в себя знаки пунктуации, символы и даже эмодзи! ?

Например:

  • Буква 'A' имеет кодовую точку U+0041
  • Символ '©' имеет кодовую точку U+00A9
  • Эмодзи '?' имеет кодовую точку U+1F60A

Почему нам нужен Юникод?

До появления Юникода для разных языков использовались разные системы кодировки, что часто приводило к недоразумениям и ошибкам при обмене данными между различными компьютерными системами. Юникод решил эту проблему, предоставив универсальный стандарт.

Кодировка символов

Теперь, когда мы понимаем, что такое Юникод, давайте поговорим о кодировке символов. Представьте это как процесс перевода этих кодовых точек Юникода в формат, который компьютеры могут хранить и обрабатывать.

UTF-8: Самая распространенная кодировка

UTF-8 – это наиболее широко используемая система кодировки. Это как умная система упаковки, которая может представлять все символы Юникода, оставаясь совместимой с ASCII (старая система кодировки).

Давайте посмотрим, как Python обрабатывает UTF-8:

# Кодирование строки в UTF-8
text = "Hello, 世界!"
encoded_text = text.encode('utf-8')
print(encoded_text)  # b'Hello, \xe4\xb8\x96\xe7\x95\x8c!'

# Декодирование UTF-8 обратно в строку
decoded_text = encoded_text.decode('utf-8')
print(decoded_text)  # Hello, 世界!

В этом примере мы сначала кодируем нашу многоязычную строку в UTF-8. Префикс b в выводе указывает, что это объект байт. Когда мы декодируем его обратно, мы получаем нашу исходную строку.

Поддержка Юникода в Python

Одна из отличных черт Python – это отличная поддержка Юникода. В Python 3 все строки являются Юникодом по умолчанию. Это означает, что вы можете свободно смешивать символы из разных языков, не выполняя никаких особых действий!

Создание строк Юникода

# Простая строка Юникода
hello_world = "Hello, 世界!"
print(hello_world)  # Hello, 世界!

# Использование управляющих последовательностей Юникода
smiley = "\U0001F60A"
print(smiley)  # ?

Во втором примере мы использовали управляющую последовательность Юникода для представления эмодзи. Символ \U указывает Python, что следует уникальная кодовая точка Юникода.

Работа с Юникодом в Python

Давайте рассмотрим еще несколько операций с Юникодом:

# Получение кодовой точки Юникода символа
print(ord('A'))  # 65
print(ord('世'))  # 19990

# Получение символа из кодовой точки Юникода
print(chr(65))  # A
print(chr(19990))  # 世

# Длина строки
mixed_string = "Hello, 世界!"
print(len(mixed_string))  # 9 (Обратите внимание: 世 и 界 считаются одним символом)

Функция ord() даёт нам кодовую точку Юникода символа, а chr() выполняет обратное действие. Обратите внимание, как len() правильно считает китайские символы как отдельные единицы.

Обработка Юникода в файлах

При работе с файлами, содержащими текст Юникода, всегда помните указывать кодировку:

# Запись Юникода в файл
with open('unicode_file.txt', 'w', encoding='utf-8') as f:
f.write("Hello, 世界!")

# Чтение Юникода из файла
with open('unicode_file.txt', 'r', encoding='utf-8') as f:
content = f.read()
print(content)  # Hello, 世界!

Указав encoding='utf-8', мы гарантируем, что наш текст Юникода корректно записывается и читается из файла.

Методы Юникода в Python

Python предоставляет несколько полезных методов для работы со строками Юникода. Вот таблица, подводящая их итог:

Метод Описание Пример
isalpha() Возвращает True, если все символы в строке являются буквами "Hello".isalpha() # True
isnumeric() Возвращает True, если все символы в строке являются числами "123".isnumeric() # True
isalnum() Возвращает True, если все символы в строке являются буквенно-цифровыми "Hello123".isalnum() # True
islower() Возвращает True, если все прописные символы в строке в нижнем регистре "hello".islower() # True
isupper() Возвращает True, если все прописные символы в строке в верхнем регистре "HELLO".isupper() # True
istitle() Возвращает True, если строка начинается с прописных букв "Hello World".istitle() # True

Эти методы особенно полезны при необходимости проверки или классификации строк Юникода.

Заключение

Поздравляем! Вы только что сделали первые шаги в увлекательном мире Юникода в Python. Помните, обработка текста разных языков и систем – это важная навышь в нашем взаимосвязанном мире, и Python делает это удивительно просто.

Когда вы продолжите свое погружение в Python, вы обнаружите, что понимание Юникода будет полезно во многих ситуациях, от веб-скрейпинга до анализа данных и далее. Практикуйтесь, и вскоре вы сможете манипулировать эмодзи и экзотическими шрифтами как настоящий мастер Python! ?✨

Credits: Image by storyset