我正在编写一个脚本来测试串行通信链接,我想从键盘输入一个转义序列到脚本中,如xB6xB7。我认为我的问题是缺乏对字符串的理解。下面是我所做的一个测试的控制台序列,我试图理解它是如何工作的:
test = 'x69x6Ax6B'
type(test)
<class 'str'>
len(test)
3
print(str.encode(test))
b'ijk' # this is the kind of result I want
test = input('?')
?x69x6Ax6B
type(test)
<class 'str'>
len(test)
12 # why is this length 12 not 3 as above?
print(str.encode(test))
b'\x69\x6A\x6B' # this is not what I want
原谅这个新手问题。我试过使用字节代替str.encode
,但结果相同。我已经设法用pyserial编写了一个串行通信程序,所以我不是完全愚蠢,诚实!
当您输入input()
时,它将自动转义为\
所以要先把它转换成字节
test_bytes = test.encode('utf8')
,那么您可以解码它并告诉python\
应该被解释为unicode转义
actual_answer = test_bytes.decode("unicode-escape")
# 'ijk'