私は '\'文字を試し、 '\ a\b\c ...'を使用して、どの文字Pythonが制御文字として解釈されるか、そして何を解釈するかを自分自身で列挙しました。ここに私は見つかりました:
\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」の何が特別なのですか?エスケープされていない他の文字とは異なる扱いをされるのはなぜですか?
documentation にすべてのエスケープコードとその意味をリストした表があります。
エスケープシーケンス意味注意 \xhh 16進値hhの文字(4,5)
ノート:
4.標準Cとは異なり、正確に2桁の16進数が必要です。
5。文字列リテラルでは、16進数と8進数のエスケープは、指定された値を持つバイトを表します。バイトがソース文字セットの文字をエンコードする必要はありません。 Unicodeリテラルでは、これらのエスケープは指定された値を持つUnicode文字を示します。
\xhh
は 16進エスケープ文字 を表すために使用されます。
xは、文字列内の(1バイトの)16進リテラルを定義するために使用されます。次に例を示します。
'\x61'
61はASCIIでaを表す97の16進値であるため、「a」と評価されます。
\ xには、照合する16進文字がありません:\ xnn->\x1B
あなたは完全なエスケープシーケンスを与えていません:
\ xhh ...
16進値hh。hhは一連の16進数字(「0」〜「9」、および「A」〜「F」または「a」〜「f」)を表します。 ISO Cの同じ構成のように、エスケープシーケンスは、最初の非16進数字が見つかるまで続きます。 (c.e.)ただし、2桁を超える16進数を使用すると、未定義の結果が生成されます。 (「\ x」エスケープシーケンスはPOSIX awkでは許可されていません。)
差出人: http://www.gnu.org/software/gawk/manual/html_node/Escape-Sequences.html