Как напечать обратный слеш?

Выведите строки, содержащие обратный слеш «\»
4)Вам дана последовательность строк. Выведите строки, содержащие обратный слеш "\".

Обратный слеш (\) на андроид, как напечатать?
Кто-нибудь с таким сталкивался? Я не смог найти на своем смартфоне данный символ.
Как добавить простой обратный слеш в строку?
У меня есть 2 строки: string str1="stringOne"; string str2="stringTwo"; Необходимо.
Как формулами заменить в строке обратный слеш на двойной
Получаю @NameLookup-ом путь к базе резервирования: firstfolder\rooms.nsf Потом по ней надо сделать.
Спецсимволы, экранирование символов, raw-строки
Теперь, когда познакомились со строками и их методами, пришло время узнать, какие специальные символы могут содержать строки в Питоне. С одним из них мы уже сталкивались – это символ перевода строки:
Я напомню, например, когда задается многострочная строка:
text = """hello python"""
то в ней автоматически добавляет этот символ перевода между строками:
'hello\npython'
Причем, это один символ, хотя он и выглядит как два символа: обратный слеш и n. Мы в этом легко можем убедиться, если воспользоваться функцией:
len(text)
Получим значения 12 = 5 + 6 + 1 – как раз число символов в двух строках плюс один символ перевода строки.
Мало того, мы можем его явно прописывать в любой строке, формируя многострочный текст, например, так:
t = "panda needs\npython"
и, выводя эту строку с помощью функции:
print(t)
увидим две строки.
Все их запоминать совсем не обязательно, на практике используются, в основном:
Значительно реже другие варианты. И, обратите внимание, перед каждым спецсимволом записан символ обратного слеша. Это, своего рода, маркер начала спецсимвола. И если после слеша идет одно из обозначений таблицы, то оно будет восприниматься как некая управляющая последовательность.
Давайте я все это продемонстрирую на примерах. Добавим в строку символ табуляции:
t = "\tpanda needs\npython"
Теперь функция print() интерпретирует его, как особый горизонтальный отступ:
print(t)
Если же мы уберем букву t:
t = "\panda needs\npython"
то при печати увидим просто обратный слеш. В действительности, здесь сработала последняя строчка таблицы: когда не подходит ни одна последовательность, то просто печатается обратный слеш.
Но здесь нужно быть осторожным. Предположим, что мы слово needs хотим заключить в обратные слеши:
t = "panda \needs\ python"
Однако, при печати:
print(t)
первый слеш пропадет, так как он будет восприниматься началом спецпоследовательности символа переноса строки. Поэтому, для добавления символа обратного слеша в строку, следует записывать два обратных слеша подряд:
t = "panda \\needs\\ python"
Тогда в строке они будут автоматически заменены на один символ слеша и при выводе мы это и видим. Это называется экранированием, когда мы символы с двойным назначением записываем, добавляя перед ними обратный слеш. В данном случае получаем двойной слеш.
Часто такие символы следует прописывать при определении путей к файлам. Как мы знаем, в ОС Windows маршруты имеют вид:
Здесь фигурируют обратные слеши для разделения каталогов. Чтобы правильно описать такой путь, слеши следует экранировать:
path = "D:\\Python\\Projects\\stepik\\tex1.py"
print(path)
видим, что маршрут определен верно. Если бы слеши не были экранированы, то получили бы неверный путь к файлу:
path = "D:\Python\Projects\stepik\tex1.py"
Вот этот момент следует хорошо запомнить.
Кроме обратного слеша экранировать также следует и кавычки. Например, мы хотим сформировать строку:
s = "Марка вина "Ягодка""
Внутри этой строки имеются кавычки. Но эти же самые кавычки определяют начало и конец строки в Python. Поэтому такая запись приведет к синтаксической ошибке. Чтобы все работало корректно, нужно выполнить экранирование кавычек:
s = "Марка вина \"Ягодка\""
Или, в данном случае, можно было бы использовать одинарные кавычки для определения строки, а внутри нее записать двойные:
s = 'Марка вина "Ягодка"'
Но на практике рекомендуется всегда выполнять экранирование таких символов, чтобы избежать случайных ошибок. Например, в этой строке уже нельзя просто так записать одинарные кавычки:
s = 'Марка вина 'Ягодка''
Снова получим синтаксическую ошибку, их нужно экранировать:
s = 'Марка вина \'Ягодка\''
В завершение этого занятия отмечу, что в Python можно задавать, так называемые, сырые (row) строки. Это строки, в которых игнорируются спецпоследовательности и все символы воспринимаются буквально так, как записаны. Например, если взять строку с путем к файлу:
path = "D:\\Python\\Projects\\stepik\\tex1.py"
то сейчас, при отображении, мы видим по одному слешу:
print(path)
Но, если определить эту же строку, как сырую, добавив букву r перед ней:
path = r"D:\\Python\\Projects\\stepik\\tex1.py"
то при печати увидим по два слеша, именно так, как прописали. Поэтому, в таких строках можно убрать спецопределения и записывать строку буквально так, как она должна выглядеть:
path = r"D:\Python\Projects\stepik\tex1.py"
На этом мы завершим наше очередное занятие по Python. Из него вы должны хорошо себе представлять, что такое спецсимволы и экранирование символов. Какие основные спецсимволы для строк существуют и как определяются сырые строки.
Видео по теме

#1. Первое знакомство с Python Установка на компьютер

#2. Варианты исполнения команд. Переходим в PyCharm

#3. Переменные, оператор присваивания, функции type и id

#4. Числовые типы, арифметические операции

#5. Математические функции и работа с модулем math

#6. Функции print() и input(). Преобразование строк в числа int() и float()

#7. Логический тип bool. Операторы сравнения и операторы and, or, not

#8. Введение в строки. Базовые операции над строками

#9. Знакомство с индексами и срезами строк

#10. Основные методы строк

#11. Спецсимволы, экранирование символов, row-строки

#12. Форматирование строк: метод format и F-строки

#13. Списки — операторы и функции работы с ними

#14. Срезы списков и сравнение списков

#15. Основные методы списков

#16. Вложенные списки, многомерные списки

#17. Условный оператор if. Конструкция if-else

#18. Вложенные условия и множественный выбор. Конструкция if-elif-else

#19. Тернарный условный оператор. Вложенное тернарное условие

#20. Оператор цикла while

#21. Операторы циклов break, continue и else

#22. Оператор цикла for. Функция range()

#23. Примеры работы оператора цикла for. Функция enumerate()

#24. Итератор и итерируемые объекты. Функции iter() и next()

#25. Вложенные циклы. Примеры задач с вложенными циклами

#26. Треугольник Паскаля как пример работы вложенных циклов

#27. Генераторы списков (List comprehensions)

#28. Вложенные генераторы списков

#29. Введение в словари (dict). Базовые операции над словарями

#30. Методы словаря, перебор элементов словаря в цикле

#31. Кортежи (tuple) и их методы

#32. Множества (set) и их методы

#33. Операции над множествами, сравнение множеств

#34. Генераторы множеств и генераторы словарей

#35. Функции: первое знакомство, определение def и их вызов

#36. Оператор return в функциях. Функциональное программирование

#37. Алгоритм Евклида для нахождения НОД

#38. Именованные аргументы. Фактические и формальные параметры

#39. Функции с произвольным числом параметров *args и **kwargs

#40. Операторы * и ** для упаковки и распаковки коллекций

#41. Рекурсивные функции

#42. Анонимные (lambda) функции

#43. Области видимости переменных. Ключевые слова global и nonlocal

#44. Замыкания в Python

#45. Введение в декораторы функций

#46. Декораторы с параметрами. Сохранение свойств декорируемых функций

#47. Импорт стандартных модулей. Команды import и from

#48. Импорт собственных модулей

#49. Установка сторонних модулей (pip install). Пакетная установка

#50. Пакеты (package) в Python. Вложенные пакеты

#51. Функция open. Чтение данных из файла

#52. Исключение FileNotFoundError и менеджер контекста (with) для файлов

#53. Запись данных в файл в текстовом и бинарном режимах

#54. Выражения генераторы

#55. Функция-генератор. Оператор yield

#56. Функция map. Примеры ее использования

#57. Функция filter для отбора значений итерируемых объектов

#58. Функция zip. Примеры использования

#59. Сортировка с помощью метода sort и функции sorted

#60. Аргумент key для сортировки коллекций по ключу

#61. Функции isinstance и type для проверки типов данных

#62. Функции all и any. Примеры их использования

#63. Расширенное представление чисел. Системы счисления

#64. Битовые операции И, ИЛИ, НЕ, XOR. Сдвиговые операторы

#65. Модуль random стандартной библиотеки

#66. Аннотация базовыми типами

#67. Аннотации типов коллекций

#68. Аннотации типов на уровне классов

#69. Конструкция match/case. Первое знакомство

#70. Конструкция match/case с кортежами и списками

#71. Конструкция match/case со словарями и множествами

#72. Конструкция match/case. Примеры и особенности использования
© 2023 Частичное или полное копирование информации с данного сайта для распространения на других ресурсах, в том числе и бумажных, строго запрещено. Все тексты и изображения являются собственностью сайта
Обратный слеш в сырых строках
Почему во втором случае кавычка экранируется? И как тогда написать raw строку из одной черты, лол?
В общем-то в доках прямо так и написано:
. r»\» is not a valid string literal.
Но мне так и не понятно, почему?

Kalashnikov ★★★
19.12.12 16:47:57 MSK

Ну без этого нельзя было бы в рав-строку включить кавычку.
provaton ★★★★★
( 19.12.12 16:56:28 MSK )

Ещё какой-то тупак (мой?):
>>> re.sub(r"(wtf)", r"\\1", "wtf") '\\1' >>> re.sub(r"(wtf)", r"\\\1", "wtf") '\\wtf' >>> re.sub(r"(wtf)", "\\1", "wtf") 'wtf' >>> re.sub(r"(wtf)", "\\\1", "wtf") '\\\x01'
Мне вообще, «\wtf» надо, эээа.
Kalashnikov ★★★
( 19.12.12 16:59:50 MSK ) автор топика
Ответ на: комментарий от Kalashnikov 19.12.12 16:59:50 MSK

Тут точно твой, строки выводятся с экранированием бекслешей. Делай print.
In [11]: print(re.sub(r"(wtf)", r"\\\1", "wtf")) \wtf In [12]: len(re.sub(r"(wtf)", r"\\\1", "wtf")) Out[12]: 4
provaton ★★★★★
( 19.12.12 17:04:22 MSK )
Ответ на: комментарий от provaton 19.12.12 17:04:22 MSK

А, тьфу, но почему тогда работает с тремя слешами а не с двумя? Один для \1, второй идёт прямиком в строку, зачем третий?
>>> re.sub("\\", r"\textbackslash ", text) Traceback (most recent call last): File "", line 1, in File "/usr/lib/python2.7/re.py", line 151, in sub return _compile(pattern, flags).sub(repl, string, count) File "/usr/lib/python2.7/re.py", line 242, in _compile raise error, v # invalid expression sre_constants.error: bogus escape (end of line)
А падает просто от того что регэксп заканчивается на слеш.
Kalashnikov ★★★
( 19.12.12 17:26:25 MSK ) автор топика
Ответ на: комментарий от Kalashnikov 19.12.12 17:26:25 MSK

А, тьфу, но почему тогда работает с тремя слешами а не с двумя?
Просто дело в том, что регекспы — это сам по себе язык программирования. Поэтому, у тебя идет два этапа экранирования — питоновское экранирование, и экранирование самого движка регекспов. То есть, питон в литерале r’\\\1′ делает три бекслеша, а уже движок регекспов из первых двух бекслешей делает один, а из \1 делает подстановку группы. Просто надо всегда разделять эти два этапа, тогда все станет понятно.
А падает просто от того что регэксп заканчивается на слеш.
Да, регексп не может заканчиваться на слеш, и эту ошибку как раз выдает движок регулярок. Для питона «\\» — это обычный литерал.
Строки¶
Самый распространённый способ создания строк — с помощью двойных кавычек:
s = "Hello" print(s)
Однако есть несколько других способов, которые имееются в языке:
s = 'Hello' s = """Hello""" s = '''Hello'''
Все 3 способа записи приводят к одному результату — созданию строки hello
Разные способы записи нужны для удобного создания строк с специальными символами:
q = "What's your name" t = 'He said: "Bond, James Bond"'
Если бы в языке не было разных способов создания данных строк, то пришлось бы использовать экранирование:
t = "He said: \", James Bond\""
Некоторые специальные символы, которые могут находиться внутри строки:
Тройные кавычки используются для создания больших строк:
s = """ Здесь может быть написан текст, занимающий любое количество строк """
Операции со строками¶
Получение длины строки:
>>> len("Hello") 5
Конкатенация (объединение) строк:
>>> "Hello " + "World" 'Hello World'
Повторение строки n раз:
>>> "python " * 3 'python python python '
Обращение к символу i строки s . Индексация начинается с нуля. Индексы могут быть отрицательными, тогда отсчет ведется с конца строки:
>>> s = 'abcdef' >>> s[0] 'a' >>> s[5] 'f' >>> s[-1] 'f' >>> s[-2] 'e'
s[begin:end:step]
Получение среза строки от позиции begin до позиции end с шагом step . Любой параметр может быть пропущен:
>>> s = "abcdef" >>> s[1:] 'bcdef' >>> s[:-1] 'abcde' >>> s[1:-1] 'bcde' >>> s[1::2] 'bdf' >>> s[::2] 'ace' >>> s[::-2] 'fdb'
Задачи¶
- Получите от пользователя 2 строки, объедините их и выведите экран
- Получите от пользователя слово, выведите первую и последнюю букву
- Получение от пользователя строку и выведите количество цифр в данный строке
- Получите от пользователя строку, в которой будет несколько слов, выведите их количество. Считать что слова отделены друг от друга одним пробелом
- Дана строка, содержащая путь к файлу:
C:\Python3\python.exe
С помощью срезов вывести отдельно имя файла, его расширение, имя каталога и полный путь к каталогу. Пример вывода:
Имя файла: python.exe Расширение: exe Имя каталога: Python3 Полный путь к каталогу: C:\Python3\
Домашнее задание¶
На вход программе подается строка. Необходимо вывести:
- Сначала выведите третий символ этой строки.
- Во второй строке выведите предпоследний символ этой строки.
- третьей строке выведите первые пять символов этой строки.
- В четвертой строке выведите всю строку, кроме последних двух символов.
- В пятой строке выведите все символы с четными индексами (считая, что индексация начинается с 0, поэтому символы выводятся начиная с первого).
- В шестой строке выведите все символы с нечетными индексами, то есть начиная со второго символа строки.
- В седьмой строке выведите все символы в обратном порядке.
- В восьмой строке выведите все символы строки через один в обратном порядке, начиная с последнего.
- В девятой строке выведите длину данной строки.
Input: Abrakadabra Output: r r Abrak Abrakadab Arkdba baaar arbadakarbA abdkrA 11
© Copyright Revision d00c0df4 .
Built with Sphinx using a theme provided by Read the Docs.
Read the Docs v: latest
Versions latest Downloads html On Read the Docs Project Home Builds Free document hosting provided by Read the Docs.