Escape-послідовності
Що таке escape-послідовності ?
escape послідовності - це поєднання символів, які складаються з похилої риски (\) зворотній слеш (бекслеш), за якою слідує буква або набір цифр.
Приклади escape-послідовностей:
Я попробував виконати(вивести) в інтерпретаторі за допомогою команди print текстовий рядок і перевірити як буде себе поводити коса риска(бекслеш).
В мене встановлений Python 3.6.8 тому при виконанні команди print потрібно ставити круглі дужки. Можливо в попередніх версія цього не потрібно але мені зустрічався код коли було написано без.
Коли в версії Python 3.6.8 ввожу без душок то зразу помилка (3.6.8: SyntaxError: Missing parentheses in call to 'print'. Did you mean print('')?).
Приклад:
print ('Приклад звичайного \тексту')
Результат:
Приклад звичайного \тексту
Коли похила риска знаходиться в середині рядка поміж букв чи на початку рядка і не використовуються спеціальні символи з нею то вона так і залишається похилою рискою.
Коли похила риска(бекслеш) знаходиться в кінці рядка то виникає помилка яка означає що немає чи відсутній спеціальний символ.
Приклад:
print ('Приклад звичайного тексту\')
Результат:
SyntaxError: EOL while scanning string literal
Якщо добавити другу похилу риску (бекслеш) перед escape-послідовністю то \n виведеться як звичайний текст.
Приклад з escape-послідовністю \n:
print ('Приклад \nзвичайного тексту')
Результат:
Приклад
звичайного тексту
Приклад якщо перед літералом ще одна коса риска:
print ('Приклад \\nзвичайного тексту')
Результат:
Приклад \nзвичайного тексту
Відповідно якщо потрібні наступні символи в тексті поміж лапок то потрібно поставити перед цим символом похилу риску(бекслеш).
Наприклад:
\\ - Символ зворотнього слеша(залишається один символ \)
\' - Апостроф(залишається один символ ')
\" - Лапка(залишається один символ ")
Дальше приклади escape-послідовностей:
\n - Початок нового рядка(Перехід на новий рядок)
Приклад:
print ('Приклад \nзвичайного тексту')
Результат:
Приклад
звичайного тексту
\r - Повернення каретки(курсору) (тобто надрукувати з початку наступного рядка)
Приклад:
values = range(0, 101)
for i in values:
print ("Complete: ", i, "%", end="\r")
Результат:
При друкуванні в інтерпретаторі Pythonвсе виглядає одну строку.
Complete: 0 % Complete: 1 % Complete: 2 % Complete: 3 %Complete: 4 % Complete: 5 % і тд.
Якщо добавити \n то буде переноситися все на новий рядок
0 % Complete:
1 % Complete:
і тд.
Я не докінця зрозумів як \r можна ще використати скоріш за все це відіграє роль при якомусь конкретному випадку (скоріш за все це правильність написання коду).
\t - горизонтальна табуляція (тобто каретка переміщається на відстань табуляції)
Приклад:
print ('Текст з та\tбуляцією')
Результат:
Текст з та буляцією
Перетворення коду в Юнікод
Як це розуміти ? Наприклад ви взяли звідкись чи надрукували звичайний (байтовий) рядок який ви могли отримати звідки завгодно, а дальше перетворите його з того кодування, яке характерне для джерела рядка(метаданні, заголовки і тд.)в рядок Unicode.
Ставши Unicode рядком він підтримує всі ті самі операції що і байтовий рядок но тепер рядок може зберігати великий діапазон символів.
Я знайшов такий варіант цього перетворення як (\u чи \U) але в мене не спрацювало і виникла помилка коли вставляєш дану escape-послідовність в середину тексту(Python 3.6.8).
В основному в мене виконалось перетворення коли символ u чи U стоїть перед лапками в яких знаходиться текст.
u - 16 бітовий символ Юнікоду в 16-річному представленні
U - 32 бітовий символ Юнікоду в 32-річному представленні
Приклад:
print(u'Текст який перетворюємо в Unicode')
print(U'Текст який перетворюємо в Unicode')
\uxxxx - 16 бітне hex значення типу Unicode
Для отримання символу потрібно ввести код символу після похилої риски.
Приклад:
print ('\u041d')
Результат:
Н
\Uxxxxxxxx - 32 бітне hex значення типу Unicode
Для отримання символу потрібно ввести код символу після похилої риски.
Приклад:
print ('\U000001a6')
print ('\U000001a5')
print ('\U000001a4')
print ('\U000001a3')
print ('\U000001a2')
print ('\U000001a1')
print ('\U000001a9')
print ('\U000001a7')
print ('\U000002a6')
Результат:
Ʀ
ƥ
Ƥ
ƣ
Ƣ
ơ
Ʃ
Ƨ
ʦ
Вертикальна табуляція
Позначається як \v і так в інтернеті написано.
Но в мене в Python 3.6.8 не працює замість цього отримую символ в вигляді квадратика.
Можливо при використанні ще додаткового коду разом з текстом або в якомусь інакшому прикладі ця escape-послідовність і спрацює.
\xhh - 16 бітне значення символу
Потрібно ввести код символу після похилої риски.
Приклад:
print ('\x23')
print ('\x24')
print ('\x25')
print ('\x26')
Результат:
#
$
%
&
\ooo - 8 бітне значення символу
Для отримання символу потрібно ввести код символу після похилої риски.
Приклад:
print ('\044')
print ('\045')
print ('\046')
print ('\047')
Результат:
$
%
&
'
\N{name} - Виводить символи за іменем з бази даних Unicod
Приклад:
print (u"\N{DAGGER}")
print (u"\N{DOUBLE DAGGER}")
print (u"\N{COLON}")
Результат:
†
‡
:
\0 Null: двійковий 0 символ (не є ознакою кінця рядка)
Згадуються також такі escape-послідовності як \a \b \f но в мене в версії Python 3.6.8 вони не працюють або в кращому випадку виводять символ квадратика.
Коментарі
Дописати коментар