SyntaxError: (ошибка Unicode) 'unicodeescape' code c 'не может декодировать байты в позиции 0-5: усеченный \ UXXXXXXXX escape - PullRequest
0 голосов
/ 27 января 2020

Использование Autokey 95.8, Python 3 версии в Linux Mint 19.3, и у меня есть ряд клавиатурных макросов, которые генерируют символы Unicode. Этот пример работает:

# alt+shift+a = á

import sys

char = "\u00E1"
keyboard.send_keys(char)

sys.exit()

Но попытка распечатать mda sh [-] приводит к следующей ошибке:

SyntaxError:(unicode error) 'unicodeescape' codec' can't decode bytes in position 0-5: truncated \UXXXXXXXX escape

# alt+shift+- = —

import sys

char = "\u2014"
keyboard.send_keys(char)

sys.exit()

Любая идея, как решить эту проблему в Autokey высоко ценится.

1 Ответ

0 голосов
/ 27 января 2020

Код, который вы разместили выше, не сгенерирует полученную вами ошибку - "truncated \UXXXXXXXX" нужен верхний регистр \U - и 8 шестнадцатеричных цифр - если вы попытаетесь ввести Python источник char = "\U2014", вы получите это сообщение об ошибке (и, вероятно, это вы получили его при экспериментировании с файлом таким образом).

Последовательность char = "\u2014" создаст символ Unicode mda sh на стороне Python - но это делает не значит, что это можно отправить как sybo Keyboard через autokey на Windows. Вот почему ваша программа, вероятно, дает сбой (и поскольку в ней нет ошибки программирования, вы не получите сообщение об ошибке Python - просто оно не будет работать - хотя Autokey может быть хорошим и распечатает какой-то подходящий файл). сообщение об ошибке в этом случае).

Вам нужно было бы посмотреть, как набрать произвольный символ Юникода в вашей конфигурации SO (на Linux mint он должен быть в документации для "wayland", я думаю, ) и вместо этого отправьте последовательность компоновки символов в Autokey. Если такой последовательности нет, то найдите способ скопировать нужный символ в буфер обмена оконной среды, а затем отправьте Autokey последовательность «вставки» (обычно ctrl + v - но в зависимости от приложения она может измениться. Эмуляторы терминала используют ctrl + shift + v, например)

...