標籤: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\x3013 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單反斜線自動轉義問題解決辦法