Python的字串
文字是人類特有的溝通方式之一,對於電腦而言,程式語言本身也是由文字組成的語言,因此從這裡就可以看出文字的處理對於電腦而言是非常重要的,其實 我們和電腦溝通幾乎都是用文字,下指令是文字、程式語言是文字、顯示出來的訊息也是文字,因此程式語言通常都會有處理字的能力,那什麼是字串呢?就是電腦 裡的一段文字,都可以叫字串,如同其它語言一樣,Python一樣有屬於它的字串,而且Python的字串處理非常強大且簡單,現在就讓我們來介紹 Python的字串。Python的字串可以由"和'或是"""包起來,基本上效果是一樣的
'字串' "字串" """多行字串""" 像這樣把字包起來就是一個字串,多行字串我們在註解裡介紹過了,其實單一行存在的字串可以拿來當註解,更精確的來說,應該是程式的文件,有關於這一點,請看Python的內件文件一文,由於那不是本篇的重點,所以在這裡只提醒帶過而已。
還有一點值得注意的是,字串是屬於"不可改變"的物件,也就是說,所有對於字串的修改,其實都是創造出一個新的字串,而不是改變字串物件本身,關於這點在以後會看到其它"可改變的"和"不可改變"的物件。
以下示範一下字串的用法:
# 設定名字為Victor Lin這樣的字串 name = "Victor Lin" print name # 有兩種'和"的好處就是可以交替使用 # 就不會有衝到的問題,在這裡用""括起來' msg = "Victor's Programming Tutorial" print msg # 同樣的也可以這樣使用 msg = 'What is "Python"?' print msg # 多行的文字 # 同樣裡面也可以使用'和" multiLine = """Hello! Baby! second line! third line! Welcome to Victor's Tutorial What is "python" """ print multiLine
跳脫字元
那你可能會問,如果我非得使用'和"或是"""在字串裡不可該怎麼辦?答案很簡單,使用跳脫字元,如果你有學過其它程式語言就知道,Python當 然也有跳脫字元,所謂的跳脫字元就是\再加上一些特定符號,來代表特殊符號,打不出來或會被誤解的符號,以下列出表格表示Python的各種跳脫字元:跳脫字元 | 代表字元 |
---|---|
\\ | 表示反斜線\ |
\' | 表示單引號' |
\" | 表示雙引號" |
\a | ASCII裡的Bell |
\b | ASCII裡的Backspace |
\f | ASCII裡的Formfeed |
\n | ASCII裡的Linefeed,也就是一般認知裡的換行 |
\N{name} | 在Unicode裡名為name代表的字元 |
\r | ASCII裡的Carriage Return |
\t | ASCII裡的Horizontal Tab |
\uxxxx | Unicode裡16位元的xxxx在16進制裡代表的字元 |
\Uxxxxxxxx | Unicode裡32位元的xxxxxxxx在16進制裡代表的字元 |
\v | ASCII裡的Vertical Tab |
\ooo | ooo在8進制代表的字元 |
\xhh | hh在16進指代表的字元 |
\0 | 代表ASCII裡的 NULL,但是並不中斷字串 |
# 使用\\跳脫字元 print "c:\\windows\\system32" # 使用\n跳脫字元 print "First line\nSecond line" # 我們在這裡跳脫了"""的第一個",因此沒問題 print """You can write string in \"""string\""" format."""
Unicode
我們在這裡不打算從頭到尾介紹Unicode,有興趣請上Google或維基百科搜尋,而Unicode簡單的來說,就是可以編任何語言的一種文字 的編碼,相較於更早之前的ASCII或Big5等只能編特定語言的編碼來得方便多,不用每個地方的程式都要特別寫,統一起來就大家都用一樣的編 碼,Python一個優勢就是它天生就支援Unicode,所以比起其它語言,這樣的先天優勢使用起來就非常方便,那我們現在就直接介紹Unicode的 使用方式,只要在字串的前面加一個前綴字u就可以了,而這個U是不分大小寫的u'中文字' U"和偉大的許功蓋先生說再見~" u"""多行也一樣"" u的大小寫並不會有任何影響,在寫範例示範之前,有一點需要注意的就是,Python程式的檔案編碼請設為utf-8,如果你搞錯弄成ASCII 等,很可能就會造成無法執行,Python直譯器在讀時遇到未預期的字元通常就會出錯,Python有提供一種方法可以讓直譯器知道這個檔案是用什麼樣的 編碼,就是
# -*- coding: 編碼名稱 -*- 這樣放在第一行的註解,而通常我們使用的都是utf-8比較多,所以也就是
# -*- coding: utf-8 -*- 而使用Python官方的IDLE有個好處就是,在存檔時它會幫你抓第一行看是什麼編碼,在存檔時就會幫你存成該種編碼,因此你只要加了這行執行起來應該就沒問題,如果你是使用記事本等編輯py檔,那就必需把該檔案設為正確的編碼。
以下示範unicode的使用方式:
# -*- coding: utf-8 -*- # U的大小寫並不造成影響 print U'中文字' # 終於不用再和許功蓋先生拚命了 print u"和偉大的許功蓋先生說再見~" print u"""多行也一樣""" # 用跳脫字元來表示也可以 print u'\u7528\u8df3\u812b\u5b57\u5143\u4f86\u8868\u793a\u4e5f\u53ef\u4ee5' # 日文也可以,不過在DOS下可能印不出來 print u'涼宮ハルヒの憂鬱'
字串的運算
字串也可以運算,你或許會覺得很奇怪,為什麼字串也需要運算,原因很簡單,當你想要把不同的字串合起來時,或是一個字串重覆個幾次,就需要字串的運算,而字串的運算有幾種,並不是像數字運算那樣每樣都有,而我們在這裡並沒有介紹所有的字串運算,先介紹最常用的幾種:字串運算 | 說明 |
---|---|
ls + rs | 左右字串串接在一起變成"lsrs"的字串 |
n*s | 字串乘上一個數字,或是數字乘上一個字串,表示重覆該字串n次 |
x in s | 如果x出現在字串s中為真 |
x not in s | 如果x不出現在字串s中為真 |
len(s) | len函數回傳s字串的長度 |
# -*- coding: utf-8 -*- firstName = "Victor" familyName = "Lin" # 在這裡我們用 + 將字串接起來 print "My name is " + firstName + " " + familyName # 在這裡我們用 * 將同一字串重覆n次 print u"一二三" * 3 # 這裡我們用in來判斷字串裡是否有某段文字 # 因為成立,所以回傳True print u'中文' in u'中文字藏在中文字裡' # 這裡我們用not in來判斷字串裡是否沒有某段文字 # 因為不成立,所以回傳False print u'中文' not in u'中文字藏在中文字裡' # 我們用len函數計算"王小名"有幾個字 print len(u'王小明') 以上運算的對象都有限定,例如你不能把字串和數字做相加
'my age : ' + 3 像這樣是錯誤的,那應該怎麼辦呢? 我們下面介紹如何將其它物件轉為字串。
將物件轉換成字串
如我們上面所說的,你不能將字串和非字串做相加,但是卻又非這麼做不可,那該怎麼辦呢? 方法很簡單,就是先將該物件轉成字串,然後兩邊都是字串就可以相加了,以下是轉成字串的函數:Col 01 | Col 11 |
---|---|
str(o) | 回傳o物件轉換成易讀的字串 |
unicode(o) | 回傳o此物件轉換成易讀的unicode字串 |
repr(o) | 回傳o此物件轉換成以跳脫字元表達的字串 |
0 意見:
張貼留言