python input()鍵盤輸入8583報文帶有\x單反斜槓自動轉義問題解決辦法

  用input()輸入的字符串是8385報文好比:\x30\x30\x30\x30。。。,可是輸入後,代碼把8583報文字符串中多加了一個\,相似\\x30。測試

  可是我把input()代碼註釋掉,把8583報文在變量中寫死,就沒有這個問題,我想應該是編碼問題形成的。編碼

  input輸入和變量固定,難道還有什麼不同嗎?spa

  代碼以下:code

  輸入的單反斜槓,被系統自動轉義雙反斜槓\\x,代碼中增長了依據判斷:
1 if "\\x" in input_a1:

  在input()鍵盤輸入時,增長decode("unicode_escape")解決了問題。blog

  代碼以下:內存

 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類型,基本上都是採用直接存儲的的方式,還有一種存儲方式是按字符串的內存編碼值進行存儲,它在讀取字符串的時候再反轉回來。utf-8

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'
相關文章
相關標籤/搜索