3

Python で次のタイプの 16 進出力を文字列文字に変換する方法を探しました。出力はSTDOUT私のコードの早い段階から来ており、さらに処理できるようにしたいと考えています。

変換したい文字列の例をいくつか挙げましょう。

\x5f\x63\x6c\x6f\x73\x65\x28

このタイプの文字列から '\x' を取り除きたいのですが、それに続く 2 つの 16 進文字だけに関心があります。できれば、このような文字列を次のように変換したいと思います。

5f 63 6c 6f 73 65 28

\x元の入力は文字列として解釈されますが、Python 自体を単純に削除することはできません。この変換を Python 内で内部的に解決できれば素晴らしいでしょうか?

4

3 に答える 3

3
>>> '\x12\x34\x56\x78'.encode('hex')
'12345678'
于 2012-10-16T14:22:56.153 に答える
2

Python 3これは、次の方法で行うことができます。

>>> s = b'\x5f\x63\x6c\x6f\x73\x65\x28'
>>> import binascii
>>> binascii.hexlify(s)
b'5f636c6f736528'

encodeバイナリ文字列からバイナリ文字列への変換が実行されるため、Python 3 ではエラーが返されます。

これは、私が以前にこの問題に直面したときの質問です。

于 2012-10-16T14:33:01.347 に答える
1

基本的な文字列関数を使用できます:

s = r'\x5f\x63\x6c\x6f\x73\x65\x28'
s.replace(r'\x', ' ').lstrip()
# '5f 63 6c 6f 73 65 28'

# or
s[2:].replace(r'\x', ' ')
于 2012-10-16T14:27:59.913 に答える