我想使用該函式從命令列接受用戶輸入
input(),并且我希望用戶提供輸入,例如\x41\x42\x43輸入“ABC”。用戶必須以位元組格式輸入輸入,他們不能提供等效的字母數字。我的問題是,當我接受用戶輸入然后將其列印出來時,我看到 python 試圖用另一個反斜杠轉義反斜杠,因此它無法將其解釋為它在 ASCII 中表示的位元組。
Python3 命令提示符中的示例代碼:
1 | >>> var_abc = "\x41\x42\x43"
2 | >>> print(var_abc)
3 | ABC
4 | >>> print(bytes(var_abc, encoding='ascii'))
5 | b'ABC'
6 | >>> user_input_abc = input('enter user input in bytes: ')
7 | enter user input in bytes: \x41\x42\x43
8 | >>> print(user_input_abc)
9 | \x41\x42\x43
10| >>> print(bytes(user_input_abc, encoding='ascii'))
11| b'\\x41\\x42\\x43'
- 我希望第 11 行的輸出與第 5 行的輸出相同。我需要做什么才能讓 python 將我的用戶輸入解釋為原始位元組而不是轉義前面的每個反斜杠?
uj5u.com熱心網友回復:
將用戶輸入字串解釋為原始位元組。您可以對字串進行編碼,然后使用“unicode_escape”編碼對這些位元組進行解碼,然后再次對該字串進行編碼以獲取位元組物件
user_input_abc = '\\x41\\x42\\x43'
print(user_input_abc) # \x41\x42\x43
user_input_escaped = user_input_abc.encode().decode('unicode_escape')
print(user_input_escaped) # 'ABC'
user_input_bytes = user_input_escaped.encode()
print(user_input_bytes) # b'ABC'
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/469362.html
標籤:Python python-3.x io 输出 字节流
