引號
python的字串可以用雙引號,也可以用單引號,這使得在字串看起來變得比較直覺,也比較美觀,不會看到一堆跳脫符號(\)。看例子先:
>>> s = 'Say "Hello".'
>>> s
'Say "Hello".'
>>> s = "I'm fine"
>>> s
"I'm fine"
以上也可以用這種方式撰寫:
>>> s = "Say \"Hello\"."
>>> s
'Say "Hello".'
>>> s = 'I\'m fine'
>>> s
"I'm fine"
也就是說,如果字串中有引號與最外側的引號相同,則必須使用跳脫符號,才不會被誤認為字串結束.
另外,python在顯示字串時,也會很聰明的視資料而使用單引號或雙引號,但是......
如果字串中有單引號也有雙引號呢?
>>> s = 'I\'m "fine"'
>>> s
'I\'m "fine"'
python會在最外層用單引號,然後資料中相同的引號使用跳脫符號。
跳脫符號
跳脫字元有下列幾個:\\ = 反斜線
\' = 單引號
\" = 雙引號
\a = 鈴聲
\b = 倒退
\f = 換頁
\n = 換列
\r = 返回
\t = 水平跳格
\v = 垂直跳格
\N{id} = Unicode資料庫ID
\uhhhh = Unicode 16位元之十六進位值
\Uhhhh = Unicode 32位元之十六進位值
\xhh = 十六進位值
\ooo = 八進位值
\0 = null (是null字元,python不像C用null字元來判斷字串結束)
在互動回應會跳脫字元,但在使用print 敘述則會被解讀。(print在3.X被改為函式)
例如:
>>> s = 'a\nb\tc'
>>> s
'a\nb\tc'
>>> print s
a
b c
跳脫符號(\)另有一個使用方式,就是一列程式太長而折成2列撰寫時,在後面加一個反斜線,就能接續到下一列繼續撰寫
>>> a = 1 + 2 + 3 +\
... 4 + 5
>>>
>>> a
15
>>>
注意到了嗎? 第2列開頭是"...",而不是">>>"
原始字串
在某些狀況下,我們並不希望使用跳脫機制,像是檔案路徑如: "c:\a\b\text.txt",在跳脫機制下必須寫成這樣:>>> path = "c:\\a\\b\\text.txt"
>>> path
'c:\\a\\b\\text.txt'
>>>
>>> print path
c:\a\b\text.txt
>>>
若是把跳脫機制關掉,字串看起來會比較直覺。
使用的方式,就是在字串的前面加一個 "r"
>>> path = r"c:\a\b\text.txt"
>>> path
'c:\\a\\b\\text.txt'
>>>
>>> print path
c:\a\b\text.txt
>>>
三重引號
有時為了字串的美觀,希望一個字串能分多列撰寫,同時希望字串與輸入的格式一致,就可以使用一種叫區塊文字的方式,使用的方式是以3個單引號或雙申號開頭,最後用同樣的3個引號結尾。例如:
>>> s = """
... How are you?
... Fine, thank you.
... """
>>> s
'\nHow are you?\nFine, thank you.\n'
>>>
>>> print s
How are you?
Fine, thank you.
三重引號字串通常使用在說明文件字串。
Unicode 字串
python可以指字字串為Unicode,用法是在字串前加一個"u"。例如:
>>> s = u"abc"
>>> s
u'abc'
>>>
在3.X版本中,字串預設就是Unicode,而新增一個bytes型態。
字串運算
字串串接:要串接多個字串,有2種方式:
第一種方式: 直接將要串接的字串放在一起:
>>> s = "This " "is " "a " "book."
>>> s
'This is a book.'
第二種方式: 使用加號"+",使用這種方式會比較直觀一些。
>>> s = "This "+"is "+"a "+"book."
>>> s
'This is a book.'
字串重複:
使用乘號"*"可以重複多次相同字串,例如:
>>> s = "Hello" * 5
>>> s
'HelloHelloHelloHelloHello'
如果我們需要一個50字元的分隔符號,就可以輕鬆的產生字串:
>>> s = "-" * 50
>>> s
'--------------------------------------------------'
索引
python字串,可以從左邊索引,或是從右邊索引。若是從左邊索引則從0,1, 2...,反之若從右邊索引,則為-1, -2...當索引值超過範圍會產生 IndexError。
字串值
|
H
|
E
|
L
|
L
|
O
|
由左至右索引
|
0
|
1
|
2
|
3
|
4
|
由右至左索引
|
-5
|
-4
|
-3
|
-2
|
-1
|
切片
若要取得字串的片段,可以使用切片的方式,使用方式在字串名稱後加中括號。使用方式:
字串名稱[起始:結束:步進值]
將字串從起始開始抓取,不包含結束值,每抓取一次步進一次。
起始、結束、步進值都可以省略。
若起始值省略,代表從0開始
若結束值省略,代表到字串結束
若步進值省略,代表1
例如:
>>> s = "HELLO"
>>> s[1]
'E'
>>> s[1:]
'ELLO'
>>> s[0::2]'HLO'
>>>
>>> s[-3]
'L'
>>> s[-3:]
'LLO'
>>> s[-3::-1]
'LEH'
字串格式
python也有類似C語言的printf格式化字串功能,使用方式也差不多,比較特別的是,若不需要指定整數、小數位數,統統可以用%s取代,使用方式:字串格式 % (值1,值2...)
常用的%s, %d, %f跟C差不多,還有其他格式就不介紹了。
>>> s = "%s %s %s" % (123, 456.789, "ABC")
>>> s
'123 456.789 ABC'
>>> s = "%05d %3.2f %s" % (123, 456.789, "ABC")
>>> s
'00123 456.79 ABC'
沒有留言:
張貼留言