2010-04-24 39 views
22

我正在試驗'\'字符,使用'\ a \ b \ c ...'只是爲了枚舉Python自己將哪些字符解釋爲控制字符以及什麼。這裏是我的發現:爲什麼' x'在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'?爲什麼與其他非轉義角色的處理方式不同?

回答

20

沒有列出所有的轉義碼以及它們在documentation意義的一個表格。

 
Escape Sequence Meaning      Notes 
\xhh    Character with hex value hh (4,5) 

注:

4.不像在標準C,需要正好兩個十六進制數字。
5.在字符串文字中,十六進制和八進制轉義字符表示具有給定值的字節 ;該字節不需要在源字符集中編碼字符 。在Unicode文字中,這些轉義字符表示具有給定值的Unicode字符 。

+0

Ooof!當然,謝謝! – PaulMcG 2010-04-24 14:13:30

4

\ X丟失要匹配對十六進制字符:\ XNN - > \ X1B

5

x用於在字符串定義(一個字節)的十六進制文字,例如:

'\x61' 

將評估爲「A」,因爲61是97的十六進制值,它代表一個在ASCII

1

你不給完整的轉義序列:

\ XHH ...

的十六進制值HH,磨片re hh代表 十六進制數字('0' - '9',以及'A' - 'F'或'a' - 'f')的序列。與ISO C中的 相同結構一樣,轉義序列一直繼續,直到看到第一個非十六進制數字 。 (c.e.)但是,使用兩個以上的 十六進制數字會產生未定義的結果。 (在「\ X」逃跑 序列沒有在POSIX awk中允許的。)

來源:http://www.gnu.org/software/gawk/manual/html_node/Escape-Sequences.html