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

來源:互聯網
上載者:User

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.