Перейти к содержимому

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

  • автор:

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

Скачай курс
в приложении

Перейти в приложение
Открыть мобильную версию сайта

© 2013 — 2023. Stepik

Наши условия использования и конфиденциальности

Get it on Google Play

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

drygdryg

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.

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

Связанные темы

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *