Ord: примеры (PYTHON)

Работа с функцией ord для преобразования символов в коды Unicode
Раздел: Встроенные функции, Преобразование типов
ord(c): int

Функция ord в языке Python

Функция ord() является встроенной в Python и предназначена для получения числового представления символа Unicode. Она принимает один обязательный аргумент - строковый символ, состоящий ровно из одного знака, и возвращает целое число - код этого символа в таблице Unicode.

Использование функции требуется в ситуациях, когда необходимо работать с числовыми кодами символов: проверка диапазонов, преобразование кодировок, низкоуровневая обработка текста, реализация криптографических алгоритмов или работа с бинарными протоколами.

Аргументы функции:

  • c - единственный аргумент, обязательный. Должен быть строкой (тип str) и содержать ровно один символ Юникода.

Возвращаемое значение:

  • Функция возвращает целое число (тип int), которое соответствует кодовой позиции переданного символа в стандарте Unicode. Диапазон возвращаемых значений - от 0 до 0x10FFFF.

Простые примеры применения

Пример с символами латинского алфавита:

print(ord('A'))
65

Пример с символом кириллицы:

print(ord('я'))
1103

Пример с цифрой, переданной как символ:

print(ord('7'))
55

Работа со специальными символами:

print(ord('\n'), ord('€'), ord('♫'))
10 8364 9835

Похожие инструменты в Python

Обратной к ord() является функция chr(), которая преобразует целочисленный код обратно в символ. Это основная и прямая альтернатива для обратного преобразования.

print(chr(65))
A

Для работы с байтами и кодировками применяют методы строк .encode() и байтов .decode(). Они выполняют преобразование целых строк в последовательности байтов согласно заданной кодировке и обратно, что полезно при вводе-выводе.

print('А'.encode('utf-8'))
b'\xd0\x90'

Модуль unicodedata предоставляет функции для получения подробных свойств символов Юникода, таких как имя или категория, что выходит за рамки простого получения кода.

Аналоги в других языках программирования

PHP: Функция ord() работает аналогично, но для однобайтовых символов. Для многобайтовых кодировок используют mb_ord().

echo ord('A'); // 65

JavaScript: Используют метод String.prototype.charCodeAt(). Возвращает числовое значение UTF-16.

console.log('A'.charCodeAt(0)); // 65

Java: Применяют приведение типа char к int или метод String.codePointAt().

int code = (int) 'A'; // 65

C#: Используют приведение типа char к int или метод Convert.ToInt32().

int code = (int)'A'; // 65

Go: Нет прямой функции. Для рун (тип rune) используют простое преобразование типа.

code := int('A') // 65

Kotlin: Используют свойство .code у символа или метод .codePointAt().

val code = 'A'.code // 65

Типичные ошибки при работе с функцией

Передача пустой строки вызывает ошибку TypeError.

ord('')
TypeError: ord() expected a character, but string of length 0 found

Передача строки, содержащей более одного символа, также приводит к TypeError.

ord('abc')
TypeError: ord() expected a character, but string of length 3 found

Попытка передать объект не строкового типа, например число.

ord(65)
TypeError: ord() expected string of length 1, but int found

Изменения в новых версиях Python

В Python 3 функция ord() не претерпела существенных изменений в своей сигнатуре или базовом поведении. Основное изменение связано с моделью строк: в Python 3 строки по умолчанию являются последовательностями символов Unicode, в отличие от Python 2, где ord() работала с байтами в строках типа str. Это обеспечивает корректную работу с символами за пределами базовой многоязыковой плоскости (BMP).

Расширенные варианты использования

Проверка, принадлежит ли символ к определенному диапазону, например, является ли буквой латинского алфавита.

Пример python
def is_latin_letter(c):
    code = ord(c)
    return (65 <= code <= 90) or (97 <= code <= 122)
print(is_latin_letter('F'), is_latin_letter('д'))
True False

Создание простого шифра Цезаря с использованием кодов символов.

Пример python
def caesar_cipher(text, shift):
    result = []
    for char in text:
        if char.isalpha():
            base = ord('A') if char.isupper() else ord('a')
            result.append(chr((ord(char) - base + shift) % 26 + base))
        else:
            result.append(char)
    return ''.join(result)
print(caesar_cipher('Hello, World!', 3))
Khoor, Zruog!

Подсчет количества символов в строке, чьи коды попадают в нестандартный диапазон, например, математические операторы.

Пример python
text = 'a + b = c * 2'
math_ops = [c for c in text if 0x2200 <= ord(c) <= 0x22FF]
print(f'Найдено {len(math_ops)} математических символов')
Найдено 0 математических символов

Валидация ввода: проверка, что строка содержит только ASCII-символы.

Пример python
def is_ascii_string(s):
    return all(ord(c) < 128 for c in s)
print(is_ascii_string('Python'), is_ascii_string('Пайтон'))
True False

Сортировка списка строк по числовому коду первого символа.

Пример python
words = ['яблоко', 'апельсин', 'банан']
sorted_words = sorted(words, key=lambda x: ord(x[0]))
print(sorted_words)
['апельсин', 'банан', 'яблоко']

Генерация последовательности символов по их кодам для создания пользовательского алфавита.

Пример python
custom_alphabet = [chr(i) for i in range(ord('A'), ord('Z')+1) if chr(i) not in 'AEIOU']
print(custom_alphabet[:10])
['B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'M']

питон ord function comments

En
Ord Return Unicode code point