Строки (String)
Каждый символ кодируется в ASCII или Unicode. Поэтому можно сказать, что строки Python также называют коллекцией символов Unicode.
В Python строки можно создавать, заключая символ или последовательность символов в кавычки. Python позволяет нам использовать одинарные, двойные или тройные кавычки для создания строки.
Рассмотрим следующий пример на языке Python для создания строки.
Создание строки в Python
Мы можем создать строку, заключив символы в одинарные или двойные кавычки. Python также предоставляет тройные кавычки для представления строки, но они обычно используются для многострочных строк или документов.
Индексация и разбиение строк в Python
Рассмотрим следующий пример:
В Python мы можем использовать оператор : (двоеточие) для доступа к подстроке из заданной строки. Рассмотрим следующий пример.
Рассмотрим следующий пример:
Рассмотрим следующий пример
Переназначение строк
Обновить содержимое строки так же просто, как присвоить его новой строке. Объект string не поддерживает присваивание элементов, т.е. строка может быть заменена только новой строкой, поскольку ее содержимое не может быть частично заменено. В Python строки неизменяемы.
Рассмотрим следующий пример.
Однако в примере 1 строка str может быть полностью присвоена новому содержимому, как указано в следующем примере.
Удаление строки в Python
Пробуем удалить часть строки:
Теперь мы пробуем удалить всю строку:
Строковые операторы в Python
Рассмотрим следующий пример, чтобы понять использование операторов Python.
Форматирование строк в Python
Экранирование последовательности
Рассмотрим следующий пример, чтобы понять реальное использование операторов Python.
Мы можем использовать тройные кавычки для решения этой задачи, но Python предоставляет возможность экранировать нашу последовательнсть символов.
Символ обратной косой черты ( / ) обозначает escape последовательность. За обратной косой чертой может следовать специальный символ, который интерпретируется по-разному. Одинарные кавычки внутри строки должны быть экранированы. Мы можем применить то же самое, что и в случае с двойными кавычками.
Ниже приведен список управляющих последовательностей для экранирования:
Escape последовательность | Описание |
---|---|
\newline | Игнорирует новую строку. |
\\ | Обратный слэш |
\’ | Одинарные кавычки |
\\» | Двойные кавычки |
\a | ASCII гудок |
\b | ASCII Backspace(BS) |
\f | ASCII Formfeed (смещение к началу след. страницы) |
\n | ASCII Linefeed (перевод на след. строку) |
\r | ASCII Carriege Return(CR) (перемещение курсора к левому краю поля) |
\t | ASCII горизонтальная табуляция |
\v | ASCII вертикальная табуляция |
\ooo | Символ с восьмеричным значением |
\xHH | Символ с шестнадцатеричным значением. |
Вот простой пример использования escape-последовательности.
Метод format() в python
Форматирование строк в Python с помощью оператора %
Рассмотрим следующий пример.
Строковые функции в Python
Python предоставляет различные встроенные функции, которые используются для работы со строками.
Экранированные последовательности
Для полноценного представления структуры текста или его специфики нам нужны какие-то особые символы. Некоторые символы должны управлять курсором (еще называют «кареткой» – отголосок из прошлого от печатных машинок). Еще нужны какие-то символы с помощью которы можно выполнять какие-нибудь служебные задачи, например, обозначать шестнадцатеричные или восьмеричные коды символов. Для таких целей и существуют экранированные последовательности.
Экранированные последовательности — это последовательности, которые начинаются с символа » \ » за которым следует один или более символов.
Давайте сразу приведем пример:
Обратите внимание на то как функция print() осуществила вывод – в тех местах, где были последовательности ‘ \n ‘ она выполнила переносы строк. Вы, конечно же, догадались, что ‘ \n ‘ – это экранированная последовательность. Единственное, что стоит добавить так это то, что такие последовательности воспринимаются интерпретатором как единственный символ, т.е. несмотря на то что последовательность может состоять из нескольких символов ей соответствует всего один-единственный код. Например:
Таблица последовательностей
Экранированных последовательностей не так уж много, так что давайте сначала перечислим их все в таблице, а потом подробно рассмотрим назначение каждой из них.
Последовательность | Назначение |
---|---|
\newline | Если после символа » \ » сразу нажать клавишу Enter то это позволит продолжать запись с новой строки. |
\\ | Позволяет записать символ обратного слеша. |
\’ | Позволяет записать один символ апострофа. |
\» | Позволяет записать один символ кавычки. |
\a | Гудок встроенного в систему динамика. |
\b | Backspace, он же возврат, он же «пробел назад» – удаляет один символ перед курсором. |
\f | Разрыв страницы. |
\n | Перенос строки (новая строка). |
\r | Возврат курсора в начало строки. |
\t | Горизонтальный отступ слева от начала строки (горизонтальная табуляция). |
\v | Вертикальный отступ сверху (вертикальная табуляция). |
\xhh | Шестнадцатеричный код символа (две шестнадцатеричные цифры hh). |
\ooo | Восьмеричный код символа (три восьмеричные цифры ooo). |
\0 | Символ Null. |
\N | ID (идентификатор) символа в базе данных Юникода, или, проще говоря, его название в таблице Юникода. |
\uhhhh | Шестнадцатеричный код 16-битного символа Юникода (символ кодируемый двумя байтами). |
\Uhhhhhhhh | Шестнадцатеричный код 32-битного символа Юникода (символ кодируемый четырьмя байтами). |
\other | Под other понимается любая другая последовательность символов. Не является экранированной последовательностью (остается без изменений с сохранением в строке символа » \ «). |
Примеры
\newline — новая строка
Данный символ позволяет записывать очень длинные «короткие» строки (строки в одинарных кавычках или апострофах) в несколько строк. Как это работает? Просто начните вводить строку, в необходимом месте введите символ » \ » а потом сразу нажмите клавишу Enter и продолжайте ввод строки. Например:
Обратите внимание, что в результирующей строке вообще нет символа » \ «. И не забывайте что пробел тоже является символом, а последовательность \newline не является разделителем:
\\ — обратный слеш
Позволяет указывать в строке необходимое количество обратных слешей, что может пригодиться при работе с файловой системой в Windows или работой с LATEX:
Новичков это немного сбивает с толку, так как они думают, что строка с путем D:\\\\мои документы\\книги\\ является неверной записью пути к директории, хотя это не так, потому что последовательность \\ интерпретируется как одино символ, которому ставится в соответствие один код, в чем легко убедиться:
\’ — апостроф
Последовательность \’ позволяет помещать внутрь строки необходимое количество апострофов:
\» — кавычка
Так же как и \’ позволяет помещать в строку необходимое количество кавычек:
\a — гудок динамика
Последовательность \a заставляет систему издать короткий звуковой гудок, который очень часто используется для предупреждения о чем-либо. Однако, услышите вы этот гудок или нет, как-то зависит от компьютера и операционной системы. Например я сейчас работаю на ноуте под Ubuntu и ничего не слышу, но на стационарном компьютере с Windows 7 все исправно работает. Использовать его или нет решайте сами, но в любом случае, этот символ никогда не выводится на экран:
\b — backspace (пробел назад)
Если вы хоть раз нажимали клавишу Backspace на клавиатуре, то вы уже знаете предназначение этой последовательности – удалять один символ перед курсором:
Если \b находится в конце строки, то удаления не происходит:
Однако, в общем случае все зависит от того сколько символов \b следует подряд друг за другом и что следует за ними:
Последовательность \b – это эхо из эры механических печатных машинок, у которых не было курсора, а была каретка, которую курсор и имитирует. Сейчас клавиша Backspace ассоциируется с удалением символа, но на самом деле, раньше выполнялось перемещение каретки на один символ влево, т.е. на одном и том же месте бумаги можно было напечатать несколько разных символов.
\f — разрыв страницы
Последовательность \f – указывает в каком месте заканчивается одна страница и начинается другая. Раньше он использовался для управления подачей бумаги в принтерах. Когда принтер встречал этот символ, это означало что ему надо было извлеч страницу и загрузить на печать следующий лист бумаги. Сейчас, он может встретиться (и то не факт, что встретится) разве что в исходных кодах некоторых языков программирования, в которых принято соглашение разбивать код на разделы с помощью этого символа. Например, интерпретатор Python способен учитывать \f при расчете отступов при анализе кода.
Данная последовательность переводит курсор на следующую строку и выполняет отступ, длина которого равна длине предшествоваишей \f части строки:
\n — перенос строки
Последовательность \n до банального проста – это просто перенос следующих за ним символов на следующую строку:
\r — возврат каретки
Последовательность \r возвращает курсор в начало строки, т.е. позволяет печатать одни символы «поверх» других. Например:
Параметр end определяет каким символом должна заканчиваться строка, т.е. мы можем сами задать такой символ (или символы):
\t — горизонтальная табуляция
Так же как и \n последовательность \t крайне проста – она просто делает один отступ (равносильно нажатию клавиши Tab):
\v — вертикальная табуляция
\xhh — шестнадцатеричный код символа
Последовательность \xhh позволяет делать запись строк, используя шестнадцатеричный код символов:
\ooo — восьмеричный код символа
Последовательность \ooo позволяет делать запись строк, используя восьмеричный код символов:
\0 — Null
Данная последовательность ведет себя так, словно ее нет. В старые-добрые времена механических принтеров, эта последовательность обозначала простой, т.е. ничего не делать. Сейчас ее можно до сих пор встретить в языке C, в конце символьных строк, причем далее за » \0 » другие цифры следовать не должны, иначе они будут восприниматься как другая экранированная восьмеричная последовательность. Ну а Python этот символ вообще никак не выводит:
Тем не менее этот символ в строке сохраняется и влияет на ее длину.
\N — идентификатор символа Юникода
Позволяет вводить символы в строку используя их название:
\uhhhh — 16-битный символ Юникода
Позволяет вводить символы в строку используя их двухбайтовый шестнадцатеричный код, причем данный способ позволяет вводить только двухбайтовые символы юникода (UTF-16BE):
\Uhhhhhhhh — 32-битный символ Юникода
Позволяет вводить символы в строку используя их четырехбайтовый шестнадцатеричный код, причем данный способ позволяет вводить только четырехбайтовые символы юникода (UTF-32BE):
\other — не экранированная последовательность
Если за символом » \ » следует что-то другое, не перечисленное в данном списке, то это не считается экранированной последовательностью, а обычной строкой в которой на ряду с остальными символами присутствует и символ » \ «:
Но внимательность все же не помешает:
BestProg
Строки. Экранированные последовательности. Неформатированные строки. Многострочные блоки текста
Содержание
Поиск на других ресурсах:
1. Общая форма представления экранированной последовательности. Символ \ (обратный слеш)
Экранированные последовательности – это последовательности символов, определяющие специальные символы которые тяжело ввести с клавиатуры или отобразить на экране. К таким символам можно отнести, например, символ новой строки, символ звукового сигнала PC Speaker, символ клавиши BackSpace и прочее.
где символы – некоторые символы или цифры, заменяющие один символ. Этот символ имеет двоичное значение определяемое экранированной последовательностью.
2. Примеры вывода строк, содержащих экранированные последовательности
Экранированные последовательности влияют на вывод строк.
После выполнения вышеприведенного кода будет получен следующий результат
3. Таблица экранированных последовательностей
В таблице приведены экранированные последовательности языка Python.
4. Определение длины строки, содержащей экранированную последовательность
В программе экранированная последовательность может состоять из нескольких символов. При выводе на экран эти несколько символов заменяются одним соответствующим символом.
Пример.
В вышеприведенном коде строка
в программе имеет длину 7 символов. Реальная длина строки равна 3 символам. Это объясняется тем, что строка содержит две экранированных последовательности которые заменяются одиночными символами:
Результат выполнения программы
5. Представление символов в шестнадцатеричной и восьмеричной системах исчисления. Пример
С помощью экранированных последовательностей можно представлять символы в шестнадцатеричной и восьмеричной системах исчисления.
Пример.
Результат работы программы
Символ обратного слеша \ сохраняется в строке в том виде как есть в случае, если после символа \ нет корректного служебного символа который отображен в таблице п.3.
Пример.
7. Отключение механизма экранирования. Пример
При использовании экранированных последовательностей возможна ситуация, когда использование символа \ (обратный слеш) в сочетании с другими символами порождает невидимые ошибки.
Например, если в некоторую переменную s нужно записать полное имя файла, который размещается по следующему маршруту
то строка на языке Python
будет содержать невидимую ошибку: переменная s равна значению
Это связано с тем, что последовательность символов \t рассматривается как один символ табуляции (см. таблицу с п. 3).
Во избежание таких негативных случаев нужно отключить (подавить) механизм экранирования. Для отключения экранированных последовательностей в строках используется следующая общая форма
Пример.
Как видно из примера, в строке s формируется ошибочное полное имя файла, а в строке s2 формируется правильное имя файла благодаря символу R перед ним.
Результат выполнения программы
8. Многострочные блоки текста. Пример
С помощью тройной кавычки «»»…»»» можно формировать многострочные блоки текста.
Строки — Python: Основы программирования
Кавычки
Какие из этих пяти вариантов — строки?
С первыми двумя все понятно, это точно строки, мы уже работали с подобными конструкциями и говорили, что строки — это наборы символов. Любой одиночный символ в кавычках — это строка. Пустая строка » — это тоже строка. То есть строкой мы считаем всё, что находится внутри кавычек, даже если это пробел, один символ или вообще отсутствие символов.
Ранее в уроках мы записывали строки в одинарных кавычках, но это не единственный способ. Можно использовать и двойные:
Теперь представьте, что вы хотите напечатать строчку Dragon’s mother. Апостроф перед буквой s — это такой же символ, как одинарная кавычка. Попробуем:
Здесь нам помогут именно двойные кавычки. Такой вариант программы отработает корректно:
Теперь интерпретатор знает, что строка началась с двойной кавычки — значит и закончиться должна на двойной кавычке. А одинарная кавычка внутри стала частью строки. Верно и обратное. Если внутри строки мы хотим использовать двойные кавычки, то саму строку надо делать в одинарных. Причем количество кавычек внутри самой строки не важно.
А что, если мы хотим создать такую строку:
В ней есть и одинарные и двойные кавычки. Как быть в этой ситуации? Нужно каким-то образом указать интерпретатору считать каждую кавычку частью строки, а не началом или концом строки.
Для этого используют символ экранирования: \ (обратный слэш). Если поставить \ перед кавычкой (одинарной или двойной), это скажет интерпретатору о том, что кавычку нужно рассматривать не как начало или конец строки, а как часть строки.
Посмотрите внимательно: нам нужно было добавить \ для двойных кавычек, но не для одинарной (апостроф), потому что сама строка создана с двойными кавычками. Если бы строка создавалась с одинарными кавычками, то символ экранирования нужен был бы перед апострофом, но не перед двойными кавычками.
А что, если нужно вывести сам обратный слеш? Точно так же, как и любой другой специальный символ, его надо экранировать самим собой.
Экранированные последовательности
Мы хотим показать вот такой диалог:
Если вывести на экран строку с таким текстом:
Набирая текст в каком-нибудь Word, вы нажимаете на Enter в конце строчки. Редактор при этом ставит в конец строчки специальный невидимый символ, который называется LINE FEED (LF, перевод строчки). В некоторых редакторах можно даже включить отображение невидимых символов. Тогда текст будет выглядеть примерно так:
Устройство, которое выводит соответствующий текст, учитывает этот символ. Например, принтер при встрече с LF протаскивает бумагу вверх на одну строку, а текстовый редактор переносит весь последующий текст ниже, также на одну строку.
На экран выведется:
Обратите внимание на следующие моменты:
Не имеет значения, что стоит перед или после \n : символ или пустая строка. Перевод будет обнаружен и выполнен в любом случае.
Помните, что строка может содержать лишь один символ или вообще ноль символов? А еще строка может содержать только \n :
Здесь мы выводим одну строку с именем, потом одну строку «перевод строки», а потом еще одну строку. Программа выведет на экран:
Несмотря на то, что в исходном тексте программы последовательность типа \n выглядит как два символа, с точки зрения интерпретатора это специальный один символ.
Конкатенация
В веб-разработке программы постоянно оперируют строками. Всё, что мы видим на сайтах, так или иначе представлено в виде текста. Этот текст чаще всего динамический, то есть полученный из разных частей, которые соединяются вместе. Операция соединения строк в программировании называется конкатенацией.
Склеивание строк всегда происходит в том же порядке, в котором записаны операнды. Левый операнд становится левой частью строки, а правый — правой. Вот еще несколько примеров:
Как видите, строки можно склеивать, даже если они записаны с разными кавычками.
Пробел — такой же символ, как и другие, поэтому сколько пробелов поставить в строке, столько и получится в итоговой строке:
Дополнительные материалы
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты.
Работа со строками в Python: литералы
Это первая часть о работе со строками, а именно о литералах строк.
Литералы строк
Работа со строками в Python очень удобна. Существует несколько литералов строк, которые мы сейчас и рассмотрим.
Строки в апострофах и в кавычках
Экранированные последовательности позволяют вставить символы, которые сложно ввести с клавиатуры.
Экранированная последовательность | Назначение |
---|---|
\n | Перевод строки |
\a | Звонок |
\b | Забой |
\f | Перевод страницы |
\r | Возврат каретки |
\t | Горизонтальная табуляция |
\v | Вертикальная табуляция |
\N | Идентификатор ID базы данных Юникода |
\uhhhh | 16-битовый символ Юникода в 16-ричном представлении |
\Uhhhh… | 32-битовый символ Юникода в 32-ричном представлении |
\xhh | 16-ричное значение символа |
\ooo | 8-ричное значение символа |
\0 | Символ Null (не является признаком конца строки) |
Если перед открывающей кавычкой стоит символ ‘r’ (в любом регистре), то механизм экранирования отключается.
Но, несмотря на назначение, «сырая» строка не может заканчиваться символом обратного слэша. Пути решения:
Строки в тройных апострофах или кавычках
Главное достоинство строк в тройных кавычках в том, что их можно использовать для записи многострочных блоков текста. Внутри такой строки возможно присутствие кавычек и апострофов, главное, чтобы не было трех кавычек подряд.
Это все о литералах строк и работе с ними. О функциях и методах строк я расскажу в следующей статье.