用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'