Python. Строки. Экранированные последовательности. Неформатированные строки. Многострочные блоки текста

Строки. Экранированные последовательности. Неформатированные строки. Многострочные блоки текста


Содержание


1. Общая форма представления экранированной последовательности. Символ \ (обратный слеш)

Экранированные последовательности – это последовательности символов, определяющие специальные символы которые тяжело ввести с клавиатуры или отобразить на экране. К таким символам можно отнести, например, символ новой строки, символ звукового сигнала PC Speaker, символ клавиши BackSpace и прочее.

Для того, чтобы представить специальные символы используется символ \. Общая форма представления экранированной последовательности следующая:

\символы

где символы – некоторые символы или цифры, заменяющие один символ. Этот символ имеет двоичное значение определяемое экранированной последовательностью.

 

2. Примеры вывода строк, содержащих экранированные последовательности

Экранированные последовательности влияют на вывод строк.

# Экранированные последовательности
import math

s = 'H\ne\nl\nl\no\nw\to\tr\tl\td\n'
s2 = '\x23+\x25=\x28'
print(s)
print(s2)

После выполнения вышеприведенного кода будет получен следующий результат

H
e
l
l
o
w o r l d

3+5=8

 

3. Таблица экранированных последовательностей

В таблице приведены экранированные последовательности языка Python.

Python. Экранированные последовательности. Таблица

 

4. Определение длины строки, содержащей экранированную последовательность

В программе экранированная последовательность может состоять из нескольких символов. При выводе на экран эти несколько символов заменяются одним соответствующим символом.

Пример.

# Экранированные последовательности - длина строки
import math

s = 'A\n\172' # \172 - код символа Z
length = len(s) # length = 3

print(s)
print('length = ',length)

В вышеприведенном коде строка

s = 'A\n\172'

в программе имеет длину 7 символов. Реальная длина строки равна 3 символам. Это объясняется тем, что строка содержит две экранированных последовательности которые заменяются одиночными символами:

  • \n – символ новой строки;
  • \172 – код символа z в восьмеричной системе исчисления.


Результат выполнения программы

A
z
length = 3

 

5. Представление символов в шестнадцатеричной и восьмеричной системах исчисления. Пример

С помощью экранированных последовательностей можно представлять символы в шестнадцатеричной и восьмеричной системах исчисления.

Пример.

# Экранированные последовательности
# шестнадцатеричная система исчисления
s1 = '\xF5A0' # s1 = '\xf5A0'
l1 = len(s1) # l1 = 3 => { '\xf5', 'A', '0' }

# восьмеричная система исчисления
s2 = '\562' # s2 = 'r' - символ в восьмеричной системе исчисления
l2 = len(s2) # l2 = 1

print('s1 = ', s1)
print('l1 = ', l1)
print('s2 = ', s2)
print('l2 = ', l2)

Результат работы программы

s1 = '\xf5A0'
l1 = 3
s2 = 'r'
l2 = 1

 

6. Представление символа обратного слеша \. Пример

Символ обратного слеша \ сохраняется в строке в том виде как есть в случае, если после символа \ нет корректного служебного символа который отображен в таблице п.3.

Пример.

# Экранированные последовательности
# символ обратного слеша \
s = '\error' # s = \error
s = "12\3562" # s = 12o2, \356 => o
s = 'c:\\myfile.txt' # s = 'c:\myfile.txt', \\=>\
s = 'c:\myfile.txt' # s = 'c:\myfile.txt'

 

7. Отключение механизма экранирования. Пример

При использовании экранированных последовательностей возможна ситуация, когда использование символа \ (обратный слеш) в сочетании с другими символами порождает невидимые ошибки.

Например, если в некоторую переменную s нужно записать полное имя файла, который размещается по следующему маршруту

C:\1\textfile.txt

то строка на языке Python

s = 'C:\1\textfile.txt' # s = 'C: extfile.txt'

будет содержать невидимую ошибку: переменная s равна значению

C: extfile.txt

Это связано с тем, что последовательность символов \t рассматривается как один символ табуляции (см. таблицу с п. 3).

Во избежание таких негативных случаев нужно отключить (подавить) механизм экранирования. Для отключения экранированных последовательностей в строках используется следующая общая форма

r'строка_символов'

или

R'строка_символов'

то есть, перед строкой нужно поставить символ r или R.

Пример.

# Экранированные последовательности. Невидимые ошибки
# 1. Ошибочный код
s = 'C:\1\textfile.txt' # s = 'C: extfile.txt'
l = len(s) # l = 15

# 2. Отключение экранированных последовательностей: r или R
# Правильный код
s2 = R'C:\1\textfile.txt' # s2 = 'C:\1\textfile.txt'
l2 = len(s2)

print(s)
print('l = ', l)
print(s2)
print('l2 = ', l2)

Как видно из примера, в строке s формируется ошибочное полное имя файла, а в строке s2 формируется правильное имя файла благодаря символу R перед ним.

Результат выполнения программы

C: extfile.txt
l = 15
C:\1\textfile.txt
l2 = 17

 

8. Многострочные блоки текста. Пример

С помощью тройной кавычки «»»…»»» можно формировать многострочные блоки текста.

Пример.

# Экранированные последовательности
# Многострочные блоки текста
s = """First line,
second line,
third line
"""

s2 = """1
2
3
4"""

print(s)
print(s2)

Результат выполнения программы

First line,
second line,
third line

1
2
3
4

 


Связанные темы