1

Тема: Друк символа за допомогою Юнікод

Потрібно надрукувати символ, знаючи його значення в Юнікод.
Наприклад, print('\u0410") виведе літеру "А".
Але якщо спробувати print("\\u" + "0410"), то вивід буде просто "\u0410".
При одні "\" перед "u" з'являється помилка.
Чому так? Чому не виводиться літера "А", строка наче та ж сама?

2 Востаннє редагувалося Firefox is dead (17.03.2023 11:55:27)

Re: Друк символа за допомогою Юнікод

Vitaliy_Danmer написав:

Потрібно надрукувати символ, знаючи його значення в Юнікод.
Наприклад, print('\u0410") виведе літеру "А".
Але якщо спробувати print("\\u" + "0410"), то вивід буде просто "\u0410".
При одні "\" перед "u" з'являється помилка.
Чому так? Чому не виводиться літера "А", строка наче та ж сама?

ні!
"\\u" + "0410" буде "\\u0410" що ніяк не "\u0410"
у print "\\" екранізується у '\' тому вам здається шо стрічки однакові

при '\u' помилка, адже формат має бути '\uhhhh'

почитайте про екранізацію символів python https://www.bestprog.net/uk/2019/11/06/ … blocks-ua/
https://www.bestprog.net/wp-content/uploads/2019/11/11_01_02_01_06_02_table_u.jpg

Подякували: Teg Miles, Betterthanyou2

3

Re: Друк символа за допомогою Юнікод

Зробив ось так:

a = R"0410"
b = R"\u"
c = b+a
print(c)

Усе одно не виводить літеру, лише її значення "\u0410".

4

Re: Друк символа за допомогою Юнікод

Тому що два слеша, один екранує інший і вже інший сенс у символі.

5 Востаннє редагувалося Firefox is dead (17.03.2023 12:23:50)

Re: Друк символа за допомогою Юнікод

Vitaliy_Danmer написав:

Зробив ось так:

a = R"0410"
b = R"\u"
c = b+a
print(c)

Усе одно не виводить літеру, лише її значення "\u0410".

так і не вийде, використовуйте

A = chr(int("0410", 16))
print(A) #вийде A

R"\u" - це "\\u"
знову ж екранізація '\\' to '\'
табличку ж кінув з посиланням ._.

Подякували: Teg Miles1

6

Re: Друк символа за допомогою Юнікод

Firefox is dead написав:
Vitaliy_Danmer написав:

Зробив ось так:

a = R"0410"
b = R"\u"
c = b+a
print(c)

Усе одно не виводить літеру, лише її значення "\u0410".

так і не вийде, використовуйте

A = chr(int("0410", 16))
print(A) #вийде A

R"\u" - це "\\u"
знову ж екранізація '\\' to '\'
табличку ж кінув з посиланням ._.

Метод chr() — саме те, що мені треба було. Просто не знав про нього.

7

Re: Друк символа за допомогою Юнікод

Задача, що стояла перед розробниками: представити довільну послідовність символів (у найпростішому випадку байтів) у пам'яті як частину коду, призначеного для читання людиною.
Проблема №1: не всі символи можна показати на екрані, скажімо, табуляції і нові рядки не показуються, є символи, відсутні у шрифтах (зокрема нові, на кшталт смайликів).
Проблема №2: якщо ми позначаємо початок і кінець стрічки лапками, ", то не можна мати цей символ усередині стрічки
Рішення: щоб представити "складний" символ, пишемо \ і якийсь код, відповідно до таблиці вище. Щоб представити одну зворотну скісну \, доводиться писати \\.

Тобто ви зрозуміли ідею? "\"\\\"" означає, що в пам'яті будуть три символи "\". Ніяких інших.
А якщо нам хочеться писати ось такі комбінації символів з купою зворотних скісних? Ок, додаємо сирі стрічки, з r на початку:
r"\"\\\"" означає, що в пам'яті буде комбінація \"\\\". Шість символів.
Відповідно, "розриваючи" такий код на частини, ви його не "склеїте". Бо ніякого розривання \u0410 на \u і 0410 не відбувається, '\u0410' - це ОДИН символ у пам'яті, просто отак хитро записаний у коді. А r'\u0410' - це ШІСТЬ символів (зворотна скісна, u, 0, 4, 1, 0).

Подякували: Teg Miles, Betterthanyou2