Почему '\ x' недействителен в Python?

Я экспериментировал с символами '\', используя '\ a \ b \ c …', чтобы просто перечислить для себя, какие символы Python интерпретируют как управляющие символы, и к чему. Вот что я нашел:

\a - BELL \b - BACKSPACE \f - FORMFEED \n - LINEFEED \r - RETURN \t - TAB \v - VERTICAL TAB 

Большинство других персонажей, которые я пробовал, «\ g», «\ s» и т. Д., Просто оценивают 2-символьную строку обратного слэша и заданного символа. Я понимаю, что это намеренно и имеет смысл для меня.

Но '\ x' – проблема. Когда мой скрипт достигает этой исходной строки:

 val = "\x" 

Я получил:

 ValueError: invalid \x escape 

Что такого особенного в «\ x»? Почему он обрабатывается иначе, чем другие неэкранированные символы?

5 Solutions collect form web for “Почему '\ x' недействителен в Python?”

Существует таблица, в которой перечислены все коды эвакуации и их значения в документации .

 Вариант последовательности Примечания Примечания
 \ xhh Символ с шестнадцатеричным значением hh (4,5)

Заметки:

4. В отличие от стандартного C, требуется ровно две шестнадцатеричные цифры.
5. В строковом литерале шестнадцатеричные и восьмеричные escape-последовательности обозначают байты с заданным значением; нет необходимости, чтобы байт кодировал символ в наборе символов источника. В литерале Unicode эти escape-последовательности обозначают символ Unicode с заданным значением.

\xhh используется для представления шестнадцатеричных escape-символов .

\ x отсутствует шестнадцатеричный символ, который вы хотите сопоставить: \ xnn -> \ x1B

x используется для определения (одного байта) шестнадцатеричных литералов в строках, например:

 '\x61' 

будет оцениваться как 'a', потому что 61 является шестнадцатеричным значением 97, которое представляет a в ASCII

Вы не даете полную escape-последовательность:

\ Xhh …

Шестнадцатеричное значение hh, где hh обозначает последовательность шестнадцатеричных цифр ('0' – '9' и либо 'A' – 'F', либо 'a' – 'f'). Подобно той же конструкции в ISO C, escape-последовательность продолжается до тех пор, пока не будет видна первая негекседикальная цифра. (ce) Однако использование более двух шестнадцатеричных цифр дает неопределенные результаты. (Escape-последовательность '\ x' не допускается в POSIX awk.)

От: http://www.gnu.org/software/gawk/manual/html_node/Escape-Sequences.html

Interesting Posts

Как модуль Unittest для Python обнаруживает тестовые примеры?

В чем разница между json.dumps и json.load?

Преобразование unixtime в объект datetime и обратно (пара функций преобразования времени, которые являются обратными)

Проверка того, является ли переменная целой или нет

Выполнить команду и получить ее stdout, stderr отдельно в почти реальном времени, как в терминале

Как я могу реализовать asyncio websockets в классе?

напечатать код, который определяет лямбда-функцию

Добавление команды в Tkinter OptionMenu?

Ввод двух ключей с одним и тем же хэшем в dict

Pyside с Python 3 Mac OS 10.8

Возможная ошибка в модуле pdb в Python 3 при использовании генераторов списков

Инициализация рабочего с помощью аргументов с использованием Сельдерея

Как получить разрешение на рабочем столе в Mac через Python?

Временная сложность операций набора python?

Как избежать ошибок травления при совместном использовании объектов между потоками?

Python - лучший язык программирования в мире.