Как убрать экранирование python



Скачай курс
в приложении
Перейти в приложение
Открыть мобильную версию сайта
© 2013 — 2023. Stepik
Наши условия использования и конфиденциальности

Public user contributions licensed under cc-wiki license with attribution required
Убрать лишние знаки экранирования
Моя программа занимается парсингом сайта, в коде html находится json словарь, у которого кавычки («) экранированы, я не могу их удалить через replace, если взять этот json, вставить в python:
> string=''
то python автоматически их уберет и ничего делать не надо
, но если эта строка парсится, то python автоматически экранирует еще раз уже сами слэш слэш, .replace(»,») и подобные не удаляет их, а в итоге мне надо из строки получить json,а именно json.loads(string). Вот исходная строка:
Как отменить экранирование в python?
Но после \ всё ломается, т.к. похоже оно ждёт \n и т.д. Как ввести просто \ в строке?
- Вопрос задан более года назад
- 277 просмотров
Комментировать
Решения вопроса 0
Ответы на вопрос 1

Python-разработчик
Просто добавьте ещё один обратный слэш:
if '/' not in msg.text or '\\' not in msg.text or '|' not in msg.text:
или используйте «сырую» строку (raw string) — интерпретатор не будет обрабатывать экранирующие символы внутри неё:
if '/' not in msg.text or r'\' not in msg.text or '|' not in msg.text:
Ответ написан более года назад
Комментировать
Нравится 2 Комментировать
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.

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 => # восьмеричная система исчисления 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