0

Python 3.2で整数を「\ x ..」の形式の文字列に変換する結果は得られませんでした。ascii 変換を使用した場合などに、'0x..' または '\\x..' が表示されますが、これは適切ではありません。バイトまたは Unicode ("\u92") を追加すると、"SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-2: end of string in escape sequence" という結果になります。

>>>bytes([92])
b'\\'

>>>chr(92) + "x" + str(42)
'\\x42' 

>>> str(hex(66))
'0x42'

>>>ascii(bytes([255])).replace(r"'b\", "")
File "<stdin>", line 1
   ascii(bytes([255])).replace(r"'b\", "")
                                      ^
SyntaxError: invalid syntax

>>> "\x".encode('raw_unicode_escape').decode('ascii')
  File "<stdin>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: end of string in escape sequence
4

4 に答える 4

2

おいおい...

>>> b'\\x42'.decode('unicode-escape')
'B'
于 2012-07-19T01:07:57.480 に答える
0

質問を読むのに苦労しましたが、これがあなたがやろうとしていたことだと思います。

>>> aString = str('\\') + str(42)
>>> print aString
\42

\の後にxが必要な場合

>>> aString = str('\\') + 'x' + str(42)
>>> print aString
\x42
于 2012-07-19T00:32:30.463 に答える
0

ascii(bytes([255])).replace(r"'b\", "")で、\afterbが次のをエスケープしたことに注意してください。"これにより、が発生しSyntaxErrorます。

エスケープしてみてください\

>>>ascii(bytes([255])).replace(r"'b\\", "")
于 2012-07-19T00:33:33.477 に答える
0
>>> chr(92)
'\\'

結果には 2 つのスラッシュが表示されますが、文字列には実際には 1 つしか含まれていません。これは、文字列が表示される方法です。実際に何が含まれているかprintがわかります。

>>> r"'b\"
SyntaxError: EOL while scanning string literal

生の文字列は、文字列の途中で引用符をエスケープするために使用できるように\、で終わることはできません。\Python の設計のその側面に同意するかどうかはわかりませんが、詳細については、Why can't Python's raw stringliters end with a single backslash? を参照してください。

>>> "\x"
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: end of string in escape sequence

16 進数で文字を識別するエスケープ シーケンスを開始しましたが、その後に 16 進数が続きませんでした。

ポイント#1をフォローアップすると、おそらくこれがあなたの混乱を説明しています:

>>> chr(92) + "x" + str(42)
'\\x42'
>>> print(chr(92) + "x" + str(42))
\x42
于 2012-07-19T00:37:23.413 に答える