26

私は、Pythonがどの文字を制御文字として解釈し、何を解釈するかを自分で列挙するために、「\ a \ b \c...」を使用して「\」文字を実験していました。これが私が見つけたものです:

\a - BELL
\b - BACKSPACE
\f - FORMFEED
\n - LINEFEED
\r - RETURN
\t - TAB
\v - VERTICAL TAB

私が試した他のほとんどの文字、「\ g」、「\ s」などは、バックスラッシュの2文字の文字列と指定された文字に評価されます。これは意図的なものであり、私には理にかなっていることを理解しています。

しかし、「\x」は問題です。スクリプトがこのソース行に到達すると、次のようになります。

val = "\x"

私は得る:

ValueError: invalid \x escape

'\ x'の何がそんなに特別なのですか?なぜそれは他のエスケープされていない文字と異なって扱われるのですか?

4

5 に答える 5

21

ドキュメントには、すべてのエスケープコードとその意味をリストした表があります。

エスケープシーケンス意味ノート
\ xhh 16進値がhh(4,5)の文字

ノート:

4.標準Cとは異なり、正確に2桁の16進数が必要です。
5.文字列リテラルでは、16進および8進エスケープは、指定された値を持つバイトを示します。バイトがソース文字セットの文字をエンコードする必要はありません。Unicodeリテラルでは、これらのエスケープは指定された値を持つUnicode文字を示します。

于 2010-04-24T13:51:58.733 に答える
6

\xhh16進エスケープ文字を表すために使用されます。

于 2010-04-24T13:47:38.347 に答える
5

xは、文字列内の(1バイトの)16進リテラルを定義するために使用されます。次に例を示します。

'\x61'

61は97の16進値であり、ASCIIでaを表すため、「a」と評価されます。

于 2010-04-24T13:47:44.453 に答える
4

\ xに、照合する16進文字がありません:\ xnn-> \ x1B

于 2010-04-24T13:46:10.617 に答える
1

あなたは完全なエスケープシーケンスを与えていません:

\xhh..。

16進値hh。ここで、hhは16進数字のシーケンスを表します(「0」〜「9」、および「A」〜「F」または「a」〜「f」のいずれか)。ISO Cの同じ構成と同様に、エスケープシーケンスは、最初の非16進数が表示されるまで続きます。(ce)ただし、2桁を超える16進数を使用すると、未定義の結果が生成されます。('\ x'エスケープシーケンスはPOSIXawkでは許可されていません。)

差出人:http ://www.gnu.org/software/gawk/manual/html_node/Escape-Sequences.html

于 2010-04-24T13:48:51.627 に答える