big5 でエンコードされた文字を含むバイナリ ファイルを読み込んでいます。ダブルバイトシーケンスを読み取ると、バイトのリストとして表示されます。
>>> bytes = ['0xa6', '0x7b']
これらの文字列バイトを変更すると:
>>> big5_str = ''
>>> for hexVal in bytes:
>>> newHexVal = '\\' + hexVal[1:]
>>> big5_str += newHexVal
したがって、次のように表示されます。
>>> print big5_str
>>> '\xa6\x7b'
しかし、実際には big5_str にはエスケープ '\' がまだ文字列に含まれています。
>>> big5_str
>>> '\\xa6\\x7b'
big5 を使用してデコードすると、同じ文字列しか返されません (二重のバックスラッシュのため):
>>> print byte_string.decode('big5')
>>> '\xa6\x7b'
バイト シーケンスを 16 進数値として明示的にコーディングすると、次のようになります。
>>> bytes2 = '\xa6\x7b'
>>> print bytes2.decode('big5')
>>> 州
私の質問は、エスケープされていないバックスラッシュを使用して、文字列ではなくバイトとして認識されるように、これらのバイトを読み取り、「\ x **」形式でフォーマットするにはどうすればよいですか?