W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
在習題 9 中我們接觸了一些新東西。我讓你看到兩種讓字符串擴展到多行的方法。第一種方法是在月份之間用 \n
(back-slash n )隔開。 這兩個字符的作用是在該位置上放入一個“新行(new line)”字符。
使用反斜杠 \
(back-slash) 可以將難打印出來的字符放到字符串。針對不同的符號有很多這樣的所謂“轉(zhuǎn)義序列(escape sequences)”,但有一個特殊的轉(zhuǎn)義序列,就是 雙反斜杠(double back-slash) \\
。這兩個字符組合會打印出一個反斜杠來。接下來我們做幾個練習,然后你就知道這些轉(zhuǎn)義序列的意義了。
另外一種重要的轉(zhuǎn)義序列是用來將單引號 ' 和雙引號 " 轉(zhuǎn)義。想象你有一個用雙引號引用起來的字符串,你想要在字符串的內(nèi)容里再添加一組雙引號進去,比如你想說 "I "understand" joe."
,Python 就會認為 "understand" 前后的兩個引號是字符串的邊界,從而把字符串弄錯。你需要一種方法告訴 python 字符串里邊的雙引號是字符串而不是真正的雙引號。
要解決這個問題,你需要將雙引號和單引號轉(zhuǎn)義,讓 Python 將引號也包含到字符串里邊去。這里有一個例子:
"I am 6'2\" tall." # 將字符串中的雙引號轉(zhuǎn)義
'I am 6\'2" tall.' # 將字符串中的單引號轉(zhuǎn)義
第二種方法是使用“三引號(triple-quotes)”,也就是 """
,你可以在一組三引號之間放入任意多行的文字。接下來你將看到用法。
tabby_cat = "\tI'm tabbed in."
persian_cat = "I'm split\non a line."
backslash_cat = "I'm \\ a \\ cat."
fat_cat = """
I'll do a list:
\t* Cat food
\t* Fishies
\t* Catnip\n\t* Grass
"""
print tabby_cat
print persian_cat
print backslash_cat
print fat_cat
注意你打印出來的制表符,這節(jié)練習中的文字間隔對于答案的正確性是很重要的。
$ python ex10.py
I'm tabbed in.
I'm split
on a line.
I'm \ a \ cat.
I'll do a list:
* Cat food
* Fishies
* Catnip
* Grass
轉(zhuǎn)義字符 | 實現(xiàn)功能 |
---|---|
\ | Backslash () |
\' | Single-quote (') |
\" | Double-quote (") |
\a | ASCII bell (BEL) |
\b | ASCII backspace (BS) |
\f | ASCII formfeed (FF) |
\n | ASCII linefeed (LF) |
\N{name} | Character named name in the Unicode database (Unicode only) |
\r ASCII | Carriage Return (CR) |
\t ASCII | Horizontal Tab (TAB) |
\uxxxx | Character with 16-bit hex value xxxx (Unicode only) |
\Uxxxxxxxx | Character with 32-bit hex value xxxxxxxx (Unicode only) |
\v | ASCII vertical tab (VT) |
\ooo | Character with octal value ooo |
\xhh | Character with hex value hh |
這里有一小段有意思的代碼,嘗試說明它們實現(xiàn)了什么功能:
while True:
for i in ["/","-","|","\\","|"]:
print "%s\r" % i,
- 通過把它們寫在卡片上記住所有的轉(zhuǎn)義序列。
- 使用
'''
(三個單引號)取代三個雙引號,看看效果是不是一樣的?- 結(jié)合轉(zhuǎn)義序列和格式字符串創(chuàng)建一個更復雜的格式。
- 記得 %r 格式化字符串嗎?使用 %r 搭配單引號和雙引號轉(zhuǎn)義字符打印一些字符串出來。 將 %r 和 %s 比較一下。 注意到了嗎?%r 打印出來的是你寫在腳本里的內(nèi)容,而 %s 打印的是你應該看到的內(nèi)容。
像這樣寫就可以:
"\nJan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug"
當然要繼續(xù)。把每次練習題中你不明白的地方記下來。當你完成更多的練習的時候,定期檢查你的筆記,看看你是否可以明白筆記中的內(nèi)容。有時候你可能需要回去看看之前做過的練習,并且重復的完成它們。
\\
不同于其他的轉(zhuǎn)義字符?這是一種簡單的寫出 (
\
)字符的方法. 自己想想為什么我們需要\\
//
或者/n
的時候,代碼沒有生效。因為你用的是
/
而不是\
.這兩個是不同的字符串,他們的作用也是不一樣的。
%r
格式的時候,轉(zhuǎn)義字符都沒有生效。因為
%r
打印出來的是你寫在腳本里的內(nèi)容, 這當然也會包含原始的轉(zhuǎn)移序列的字符??梢允褂?code>%s。一定要記住:%r
是調(diào)試用的,而%s
才是顯示輸出用的。
你需要明白一點,所有的這些練習題,都可以結(jié)合起來解決一些難題。這節(jié)練習帶你了解了格式化字符串,你可以結(jié)合使用格式化字符串和轉(zhuǎn)義字符寫一些新的代碼。
'''
和"""
哪個更好?這個只依賴于你的代碼風格。 現(xiàn)在可以使用
'''
(三個單引號),但是也要做好準備別人都在用的,感覺更好的方式。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: