码迷,mamicode.com
首页 > 编程语言 > 详细

python input()键盘输入8583报文带有\x单反斜杠自动转义问题解决办法

时间:2018-02-03 23:15:37      阅读:390      评论:0      收藏:0      [点我收藏+]

标签:enc   cap   decode   数据   斜杠   16进制   esc   div   print   

  用input()输入的字符串是8385报文比如:\x30\x30\x30\x30。。。,但是输入后,代码把8583报文字符串中多加了一个\,类似\\x30。

  但是我把input()代码注释掉,把8583报文在变量中写死,就没有这个问题,我想应该是编码问题造成的。

  input输入和变量固定,难道还有什么不一样吗?

  代码如下:

技术分享图片

  输入的单反斜杠,被系统自动转义双反斜杠\\x,代码中增加了依据判断:
1 if "\\x" in input_a1:

技术分享图片

  在input()键盘输入时,增加decode("unicode_escape")解决了问题。

技术分享图片

  代码如下:

 1 #coding:utf-8
 2 
 3 #固定8583报文16进制数据
 4 a = "\x31\x31\x39\x39\x30\x36\x30\x30\x30\x32\x30\x30"
 5 print(type(a))
 6 print(a)
 7 b = str(a)
 8 print("变量-->%s"%b)
 9 
10 
11 #通过键盘复制的8583报文16进制数据
12 #\x31\x31\x39\x39\x30\x36\x30\x30\x30\x32\x30\x30
13 input_a = raw_input("输入1—>:").decode("unicode_escape")
14 if "\\x" in input_a:
15     print("输入的单反斜杠,被系统自动转义双反斜杠\\x")
16 else :
17     print("使用unicode_escape存储内存值方法,输入的8583报文单反斜杠没有被转义")
18     print(type(input_a))
19     b = str(input_a)
20     print("键盘-->%s"%b)
21     
22 #查问题
23 input_a1 = raw_input("输入2—>:")
24 if "\\x" in input_a1:
25     print("输入的单反斜杠,被系统自动转义双反斜杠\\x")
26 else :
27     print(type(input_a))
28     b = str(input_a)
29     print("键盘-->%s"%b)

  百度了一些资料,我们数据字符串通常都是str、unicode类型,基本上都是采用直接存储的的方式,还有一种存储方式是按字符串的内存编码值进行存储,它在读取字符串的时候再反转回来。

1 >>> u中文测试.encode(unicode-escape)
2 \\u4e2d\\u6587\\u6d4b\\u8bd5
3 
4 >>> \\u4e2d\\u6587\\u6d4b\\u8bd5.decode(unicode-escape)
5 u\u4e2d\u6587\u6d4b\u8bd5

 

python input()键盘输入8583报文带有\x单反斜杠自动转义问题解决办法

标签:enc   cap   decode   数据   斜杠   16进制   esc   div   print   

原文地址:https://www.cnblogs.com/zhuque/p/8410900.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!