Как сделать обратный слэш строкой python

Добавил пользователь Евгений Кузнецов
Обновлено: 05.10.2024

До сих пор мы обсуждали числа как стандартные типы данных в Python. В этом разделе учебника мы рассмотрим самый популярный тип данных в Python - строку.

Строка в Python - это набор символов, окруженных одинарными, двойными или тройными кавычками. Компьютер не понимает символы; внутри он хранит управляемый символ как комбинацию 0 и 1 .

Каждый символ кодируется в ASCII или Unicode. Поэтому можно сказать, что строки Python также называют коллекцией символов Unicode.

В Python строки можно создавать, заключая символ или последовательность символов в кавычки. Python позволяет нам использовать одинарные, двойные или тройные кавычки для создания строки.

Рассмотрим следующий пример на языке Python для создания строки.

Если мы проверим тип переменной str с помощью сценария Python print(type(str)) , то будет выведено:

В Python строки рассматриваются как последовательность символов, что означает, что Python не поддерживает символьный тип данных; вместо этого один символ, записанный как p , рассматривается как строка длины 1 .

Создание строки в Python

Мы можем создать строку, заключив символы в одинарные или двойные кавычки. Python также предоставляет тройные кавычки для представления строки, но они обычно используются для многострочных строк или документов.

Индексация и разбиение строк в Python

Как и в других языках, индексация строк в Python начинается с 0 . Например, строка "HELLO" индексируется так, как показано на рисунке ниже.

Индексация и разбиение строк в Python

Рассмотрим следующий пример:

В Python мы можем использовать оператор : (двоеточие) для доступа к подстроке из заданной строки. Рассмотрим следующий пример.

доступ к подстроке из заданной строки в Python

Здесь мы должны заметить, что верхний диапазон, заданный в операторе slice , всегда является эксклюзивным, т.е. если задано str = 'HELLO' , то str[1:3] всегда будет включать str[1] = 'E' , str[2] = 'L' и ничего больше.

Рассмотрим следующий пример:

Мы можем сделать отрицательную нарезку в строке; она начинается с самого правого символа, который обозначается как -1 . Второй крайний правый индекс обозначает -2 , и так далее. Рассмотрим следующее изображение.

отрицательный slice в строке python

Рассмотрим следующий пример

Переназначение строк

Обновить содержимое строки так же просто, как присвоить его новой строке. Объект string не поддерживает присваивание элементов, т.е. строка может быть заменена только новой строкой, поскольку ее содержимое не может быть частично заменено. В Python строки неизменяемы.

Рассмотрим следующий пример.

Однако в примере 1 строка str может быть полностью присвоена новому содержимому, как указано в следующем примере.

Удаление строки в Python

Как мы знаем, строки неизменяемы. Мы не можем удалить или убрать символы из строки. Но мы можем удалить всю строку, используя ключевое слово del .

Пробуем удалить часть строки:

Теперь мы пробуем удалить всю строку:

Строковые операторы в Python

Оператор Описание
+ Ооператор конкатенации, используемый для соединения строк, заданных по обе стороны от оператора.
* Оператор повторения. Он объединяет несколько копий одной и той же строки.
[] Оператор среза. Он используется для доступа к подстрокам определенной строки.
[:] Оператор среза диапазона. Он используется для доступа к символам из указанного диапазона.
in Оператор членства. Он возвращает, присутствует ли определенная подстрока в указанной строке.
not in Оператором членства и выполняет прямо противоположное действие по отношению к in . Он возвращает true , если определенная подстрока отсутствует в указанной строке.
r/R Используется для указания необработанной строки. Необработанные строки используются в тех случаях, когда необходимо вывести фактическое значение управляющих символов, таких как C://python . Чтобы определить любую строку как необработанную, за строкой следует символ r или R .
% Он используется для форматирования строк. Он использует спецификаторы формата, применяемые в программировании на языке C , такие как %d или %f , для отображения их значений в python.

Рассмотрим следующий пример, чтобы понять использование операторов Python.

Форматирование строк в Python

Экранирование последовательности

Допустим, нам нужно записать текст в виде - They said, "Hello what's going on?"- данное утверждение может быть записано в одинарных или двойных кавычках, но оно вызовет SyntaxError , так как содержит как одинарные, так и двойные кавычки.

Рассмотрим следующий пример, чтобы понять реальное использование операторов 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-последовательности.

Мы можем игнорировать управляющую последовательность из заданной строки, используя необработанную строку. Для этого перед строкой нужно написать r или R . Рассмотрим следующий пример.

Метод format() в python

Метод format() является наиболее гибким и полезным методом форматирования строк. Фигурные скобки <> используются в качестве заполнителя строки и заменяются аргументом метода format() . Рассмотрим приведенный пример:

Форматирование строк в Python с помощью оператора %

Python позволяет нам использовать спецификаторы формата, используемые в операторе printf языка Си . Спецификаторы формата в Python обрабатываются так же, как и в C. Однако Python предоставляет дополнительный оператор % , который используется в качестве интерфейса между спецификаторами формата и их значениями. Другими словами, можно сказать, что он связывает спецификаторы формата со значениями.

Рассмотрим следующий пример.

Строковые функции в Python

Python предоставляет различные встроенные функции, которые используются для работы со строками.

Я думал, что, поскольку я включил “r” в начале, мне не понадобится двойная обратная косая черта в конце, потому что это будет рассматриваться как необработанная строка. Но следующее не работает:

… предположительно потому, что Python видит escape-символ перед конечной цитатой. Так что же тогда точка “r”? И хотя мои файлы сохраняются в нужном месте при экспорте, мне не нравится, что команда print дает мне две обратные слеши после теста (например, C:\Test\3.jpg), когда он просто дает мне один после C:

Как я могу получить обратную косую черту в моих файлах?

Не пытайтесь использовать строковые манипуляции для создания путей к файлам. Python имеет модуль os.path для этого:

Это обеспечит правильное построение пути.

(Кроме того, не вызывайте целое число int , поскольку оно затеняет встроенную функцию int() .)

Даже в исходной строке строковые кавычки могут быть экранированы с обратным слэшем, но обратная косая черта остается в строке; например, r"\"" – допустимый строковый литерал, состоящий из двух символов: обратная косая черта и двойная кавычка; r"\" не является допустимым строковым литералом (даже необработанная строка не может заканчиваться нечетным числом обратных косых черт). В частности, необработанная строка не может закончиться одной обратной косой чертой (так как обратная косая черта избежит следующего символа кавычки). Также обратите внимание, что одна обратная косая черта, сопровождаемая символом новой строки, интерпретируется как эти два символа как часть строки, а не как продолжение строки.

Таким образом, это не будет работать так. Если вы хотите использовать необработанную строку, но иметь обратную косую черту назад, вам нужно добавить это отдельно после этого:

Кроме того, в вашем случае вы можете просто использовать форматирование строк для вставки ваших значений:

Или вы используете os.path.join для создания пути:

во-первых, не вызывайте целое число int, поскольку оно затеняет встроенную функцию int().
использовать os.path – очень умный способ:

ИЛИ U должен использовать строки для манипуляции для создания путей к файлам:

Допустим, мы хотим создать строку Hi\nHello в python. Если мы попытаемся назначить его обычной строке, \n будет рассматриваться как новая строка.

Давайте посмотрим, как необработанная строка помогает нам рассматривать обратную косую черту как нормальный символ.

Давайте посмотрим на другой пример, где символ, за которым следует обратная косая черта, не имеет особого значения.

Мы получили ошибку, потому что python не знает, как декодировать ‘\ x’, поскольку он не имеет особого значения. Давайте посмотрим, как мы можем создать ту же строку, используя необработанные строки.

Не путайте с выводом с двумя обратными косыми чертами. Это просто для того, чтобы показать это как обычную строку Python с экранированием обратной косой черты.

Когда за обратной косой чертой следует кавычка в необработанной строке, она экранируется. Однако обратная косая черта также остается в результате. Из-за этой функции мы не можем создать необработанную строку с одиночной обратной косой чертой. Кроме того, необработанная строка не может иметь нечетное количество обратных косых черт в конце.

Некоторые из недопустимых необработанных строк:

Давайте посмотрим на некоторые допустимые примеры необработанных строк в кавычках.

Почему во втором случае кавычка экранируется? И как тогда написать raw строку из одной черты, лол?

В общем-то в доках прямо так и написано:

. r"\" is not a valid string literal.

Но мне так и не понятно, почему?



Ну без этого нельзя было бы в рав-строку включить кавычку.


Ещё какой-то тупак (мой?):


Тут точно твой, строки выводятся с экранированием бекслешей. Делай print.


А, тьфу, но почему тогда работает с тремя слешами а не с двумя? Один для \1, второй идёт прямиком в строку, зачем третий?


А, тьфу, но почему тогда работает с тремя слешами а не с двумя?

Просто дело в том, что регекспы - это сам по себе язык программирования. Поэтому, у тебя идет два этапа экранирования - питоновское экранирование, и экранирование самого движка регекспов. То есть, питон в литерале r'\\\1' делает три бекслеша, а уже движок регекспов из первых двух бекслешей делает один, а из \1 делает подстановку группы. Просто надо всегда разделять эти два этапа, тогда все станет понятно.

А падает просто от того что регэксп заканчивается на слеш.

Читайте также: