Python - Система Юникода
Привет, будущие волшебники Python! Сегодня мы отправляемся в захватывающее путешествие в мир Юникода в Python. Не волнуйтесь, если вы раньше не слышали о Юникоде – к концу этого урока вы сможете работать с текстом как профессионал!
Что такое система Юникода?
Представьте себе, что вы пытаетесь написать письмо своему другу в Японию, но ваша клавиатура поддерживает только английские буквы. Уныло, правда? И именно здесь на помощь приходит Юникод!
Юникод – это как огромный словарь, который назначает уникальное число (называемое кодовой точкой) каждому символу в каждой языковой системе мира. Это не только буквы и цифры – это включает в себя знаки пунктуации, символы и даже эмодзи! ?
Например:
- Буква '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