Chr: примеры (PYTHON)
chr(i): strФункция chr в Python: основы
Функция chr() в языке Python преобразует целое число, представляющее код символа в Unicode, в соответствующий этому коду символ. Эта функция применяется для работы с текстовыми данными, когда необходимо получить символ по его известному коду.
Функция принимает один обязательный аргумент:
- i - целое число в диапазоне от 0 до 1114111 (0x10FFFF в шестнадцатеричной системе). Это число представляет собой код символа в стандарте Unicode.
Возвращаемым значением является строка длиной в один символ, соответствующая указанному коду Unicode. Если аргумент выходит за допустимые границы, возникает исключение ValueError.
Примеры использования chr
print(chr(65))A
print(chr(945))α
print(chr(128512))????
# Использование шестнадцатеричного представления
print(chr(0x41))A
Схожие функции в Python
В Python существует функция ord(), выполняющая обратную операцию - возвращает код Unicode для указанного символа. Еще одна связанная функция - ascii(), возвращающая строковое представление объекта с экранированием не-ASCII символов.
Функцию chr() предпочтительнее использовать для преобразования известных кодов в символы, а ord() - для получения кодов символов. Функция ascii() полезна при необходимости безопасного вывода строк, содержащих символы за пределами ASCII.
Аналоги в других языках
JavaScript: String.fromCharCode() преобразует коды Unicode в символы, но работает с кодами UTF-16.
console.log(String.fromCharCode(65));A
Java: Character.toString() или приведение типа.
System.out.println(Character.toString(65));A
PHP: функция chr() работает с кодами ASCII, а для Unicode используется mb_chr().
echo chr(65);A
C#: метод Convert.ToChar() или приведение типа.
Console.WriteLine((char)65);A
Golang: используется приведение типа rune.
fmt.Println(string(rune(65)))A
Основное отличие Python - работа с полным диапазоном Unicode напрямую, в то время как некоторые другие языки оперируют кодами UTF-16 или ограничены ASCII.
Типичные ошибки
1. Передача числа вне диапазона:
print(chr(-1))ValueError: chr() arg not in range(0x110000)
2. Передача нецелочисленного аргумента:
print(chr('A'))TypeError: an integer is required (got type str)
3. Ожидание, что функция работает с кодами ASCII, превышающими 127, без учета кодировки: В Python 3 функция корректно обрабатывает все коды Unicode, но при выводе в консоли могут возникнуть проблемы с отображением, если консоль не поддерживает символ.
Изменения в последних версиях
Функция chr() не претерпела существенных изменений в последних версиях Python. Начиная с Python 3.0, функция всегда возвращает строку в кодировке Unicode, что соответствует стандартной работе с текстом в третьей версии языка. В Python 2 существовала аналогичная функция, но она работала с кодами ASCII и возвращала символ в виде строки байтов.
Расширенные примеры
Генерация алфавита:
alphabet = [chr(i) for i in range(ord('A'), ord('Z')+1)]
print(''.join(alphabet))ABCDEFGHIJKLMNOPQRSTUVWXYZ
Создание строки из списка кодов:
codes = [72, 101, 108, 108, 111]
greeting = ''.join(chr(code) for code in codes)
print(greeting)Hello
Обработка символов, не входящих в базовую плоскость Unicode:
# Символ музыкального ключа (U+1D11E)
print(chr(0x1D11E))????
Использование с функциями форматирования:
for i in range(0x2600, 0x2605):
print(f'Код {i:#x} -> {chr(i)}')Код 0x2600 -> ☀ Код 0x2601 -> ☁ Код 0x2602 -> ☂ Код 0x2603 -> ☃ Код 0x2604 -> ☄
Проверка на допустимость символа перед преобразованием:
def safe_chr(num):
try:
return chr(num)
except ValueError:
return None
print(safe_chr(999999))None