Python: Экранированные последовательности
Допустим, мы хотим вывести текст ниже в две строчки.
- Are you hungry?
- Aaaarrrgh!Если мы просто передадим этот текст в print(), то Python напечатает все в одну строчку. Технически можно написать два подряд идущих print(), но представим что мы хотим это сделать с помощью одного.
print("- Are you hungry?- Aaaarrrgh!")
# => - Are you hungry?- Aaaarrrgh!Чтобы каждая из них начиналась с новой строки, нужно добавить перевод строки, то есть "нажать Enter". В программировании это реализуется через добавление специальных символов, в данном случае \n. Да, это не опечатка. Несмотря на то, что мы видим здесь два символа, с точки зрения Python это один символ.
print("- Are you hungry?\n- Aaaarrrgh!")Результат будет таким.
- Are you hungry?
- Aaaarrrgh!Что такое \n?
\n является управляющей последовательностью (англ. escape sequence, иногда говорят "экранированная последовательность"). Она обозначает перевод строки, но не отображается напрямую. Вы не увидите \n в выводе программы, так как она влияет только на расположение текста.
В текстовых редакторах при нажатии Enter добавляется невидимый символ LF (Line Feed). Именно его и означает \n. Иногда такие символы можно увидеть, если включить отображение спецсимволов.
- Привет!¶
- О, привет!¶
- Как дела?Принтеры, редакторы и интерпретаторы Python понимают \n как команду начать строку с новой строки.
Примеры использования \n
Вот как Python обрабатывает управляющую последовательность \n.
В коде 'Hello\nWorld'
↓
На экране Hello
WorldМестоположение \n меняет итоговый вывод.
print("Hello\nWorld")
# Hello
# World
print("Hello \nWorld")
# Hello
# World (в конце первой строки есть пробел)
print("Hello\n World")
# Hello
# World (во второй строке в начале пробел)
print("Hello\n\nWorld")
# Hello
#
# World (пустая строка между ними)Пробелы до или после \n также учитываются. Python воспринимает их как обычные символы и отображает в выводе.
Вы также можете вставлять \n в любую часть строки, до, после или даже использовать его отдельно.
print("First line")
print("\n") # Просто пустая строка
print("Second line")Результат будет таким.
First line
Second lineКак вывести сам символ \n
\n в Python является управляющей последовательностью. Она управляет расположением текста и не выводится на экран как обычные символы. Если вам нужно вывести именно символы \ и n, а не перевод строки, их нужно экранировать. Для этого перед обратным слешем добавляют еще один слеш.
print("Hello\\nWorld")
# Hello\nWorld
# Если забыть указать второй слеш
print("Hello\nWorld")
# Hello
# WorldВ этом случае Python понимает \\ как обычный обратный слеш и показывает строку без перевода строки.
Другие управляющие последовательности
Кроме \n, в Python есть и другие управляющие последовательности.
\tобозначает табуляцию (эквивалент клавиши Tab).\rобозначает возврат каретки (используется в Windows, но редко применяется в Python-коде).- В программировании чаще всего используют именно
\n, его достаточно для большинства задач.
Важные детали
\nявляется одним символом, несмотря на то, что в коде он записан как два (\ и n).- На Windows по умолчанию используется комбинация
\r\n, но в Python (и вообще в кроссплатформенной разработке) принято использовать только\n, чтобы избежать проблем при переносе кода между системами.
Задание
Вы пишете программу, которая показывает пользователю подсказку о том, как разбить текст на строки. Выведите подсказку одним вызовом print():
Для разделения строк используйте "\n"
Пример: print("строка1\nстрока2")Обратите внимание: \n в первой строке — это буквальный текст, а не перевод строки.
Полезное
Python: Экранированные последовательности
Допустим, мы хотим вывести текст ниже в две строчки.
- Are you hungry?
- Aaaarrrgh!Если мы просто передадим этот текст в print(), то Python напечатает все в одну строчку. Технически можно написать два подряд идущих print(), но представим что мы хотим это сделать с помощью одного.
print("- Are you hungry?- Aaaarrrgh!")
# => - Are you hungry?- Aaaarrrgh!Чтобы каждая из них начиналась с новой строки, нужно добавить перевод строки, то есть "нажать Enter". В программировании это реализуется через добавление специальных символов, в данном случае \n. Да, это не опечатка. Несмотря на то, что мы видим здесь два символа, с точки зрения Python это один символ.
print("- Are you hungry?\n- Aaaarrrgh!")Результат будет таким.
- Are you hungry?
- Aaaarrrgh!Что такое \n?
\n является управляющей последовательностью (англ. escape sequence, иногда говорят "экранированная последовательность"). Она обозначает перевод строки, но не отображается напрямую. Вы не увидите \n в выводе программы, так как она влияет только на расположение текста.
В текстовых редакторах при нажатии Enter добавляется невидимый символ LF (Line Feed). Именно его и означает \n. Иногда такие символы можно увидеть, если включить отображение спецсимволов.
- Привет!¶
- О, привет!¶
- Как дела?Принтеры, редакторы и интерпретаторы Python понимают \n как команду начать строку с новой строки.
Примеры использования \n
Вот как Python обрабатывает управляющую последовательность \n.
В коде 'Hello\nWorld'
↓
На экране Hello
WorldМестоположение \n меняет итоговый вывод.
print("Hello\nWorld")
# Hello
# World
print("Hello \nWorld")
# Hello
# World (в конце первой строки есть пробел)
print("Hello\n World")
# Hello
# World (во второй строке в начале пробел)
print("Hello\n\nWorld")
# Hello
#
# World (пустая строка между ними)Пробелы до или после \n также учитываются. Python воспринимает их как обычные символы и отображает в выводе.
Вы также можете вставлять \n в любую часть строки, до, после или даже использовать его отдельно.
print("First line")
print("\n") # Просто пустая строка
print("Second line")Результат будет таким.
First line
Second lineКак вывести сам символ \n
\n в Python является управляющей последовательностью. Она управляет расположением текста и не выводится на экран как обычные символы. Если вам нужно вывести именно символы \ и n, а не перевод строки, их нужно экранировать. Для этого перед обратным слешем добавляют еще один слеш.
print("Hello\\nWorld")
# Hello\nWorld
# Если забыть указать второй слеш
print("Hello\nWorld")
# Hello
# WorldВ этом случае Python понимает \\ как обычный обратный слеш и показывает строку без перевода строки.
Другие управляющие последовательности
Кроме \n, в Python есть и другие управляющие последовательности.
\tобозначает табуляцию (эквивалент клавиши Tab).\rобозначает возврат каретки (используется в Windows, но редко применяется в Python-коде).- В программировании чаще всего используют именно
\n, его достаточно для большинства задач.
Важные детали
\nявляется одним символом, несмотря на то, что в коде он записан как два (\ и n).- На Windows по умолчанию используется комбинация
\r\n, но в Python (и вообще в кроссплатформенной разработке) принято использовать только\n, чтобы избежать проблем при переносе кода между системами.
Задание
Вы пишете программу, которая показывает пользователю подсказку о том, как разбить текст на строки. Выведите подсказку одним вызовом print():
Для разделения строк используйте "\n"
Пример: print("строка1\nстрока2")Обратите внимание: \n в первой строке — это буквальный текст, а не перевод строки.
Полезное
Ваше упражнение проверяется по этим тестам
import importlib
def test(capsys):
expected = 'Для разделения строк используйте "\\n"\nПример: print("строка1\\nстрока2")'
expect_output(capsys, expected)
def expect_output(capsys, expected):
importlib.import_module('solution')
out, _err = capsys.readouterr()
actual = out.strip('\n')
with capsys.disabled():
print('\n')
print(out)
assert actual == expectedРешение учителя откроется через:
20:00
