尚未建立名稱
能量:0
我的帳號中心
問 學Bot 任何問題!
首頁&搜尋
最愛&收藏
所有課程
分享資源
帳號設定
關於學呀
線上募款
Python中的字串
編輯章節
EDU-MD
Google 教室
加至書籤
# Python 中的字串 我們對於**字串**,都有一定的直覺瞭解—不論你有沒有在程式中使用字串的經驗。那是因為,「字串」的概念,已經深深地植入在我們的日常生活中。字串,顧名思義就是一串字。 在 Python 中,字串扮演著一個極度重要的角色,它是一種 Python 內建的[資料型態](/view/f99a848dfa?subj=python),基乎上任何在引號 `""` 的文字都可以稱作是一個字串。接下來,讓我們來探索一些 Python 中關於字串的特點吧! ## 什麼是字串? 我們都有寫過下面這種簡單的程式: ``` print("Hello World") ``` 或者是: ``` name = input("Enter your name: ") print("Hello, " + name) ``` 而且我們都知道,這些文字一定要放在引號 `""` 中。然而,我們卻鮮少去思考這些文字(字串)到底是什麼東西。字串是一種 Python 內建的資料型態,具有著強大的功能以及內建的函數可以使用。 我們可以隨心所欲地將字元加入字串中,在使用字串時,只需要將字串的內容用單引號 `''` 或雙引號 `""` 中即可。另外,引號的數量可以是 1 個,也可以是 3 個。讓我們建立變數試試看: ``` a = 'Hi.' b = '''Hi.''' c = "Hi." d = """Hi.""" ``` 那麼,為什麼會有 1 個引號與 3 個引號的差別呢?其實這兩者之間沒有什麼差別,除了**3 個引號的字串可以跨行**: ``` e = """ This string spans across two lines. """ ``` ## 跳脫字元 接著,讓我們試著用上面所學到的東西來建立一個字串。其內容為「He said, "It is good."」,如果我們直接將整段文字包在雙引號中,像是這樣: ``` stringA = "He said, "It is good."" ``` 則執行時,將會出現這樣的錯誤: ``` File "", line 1 stringA = "He said, "It is good."" ^ SyntaxError: invalid syntax ``` 怎麼會發生這種事情呢?原來,電腦在瞭解程式時時,將程式中的第一個引號 `"` 視為字串的開始,並將第二個引號 `"` 視為字串的結束。因此,電腦在理解剛剛「He said, "....」字串時,將 `"He said"` 視為一個字串,也就使得後面的「It」變成一個錯誤。 那麼,如果我們真的很想要在字串中使用引號「"」怎麼辦?此時,**跳脫字元**(**escape character**)就成了一個相當方便的工具了。我們只要在字串中的引號前面,加上一個反斜線 `\` 就可以了。這個反斜線 `\` 的存在,就像在告訴電腦:「不管後面加上什麼東西,都不要理它。」 ``` stringA = "He said, \"It is good.\"" print(stringA) ``` 這麼一來,就不會有錯誤發生,我們也可以成功地 `print()` 出想要的字串(下列為輸出結果): ``` He said, "It is good." ``` 仔細看看後你會發現,Python 在 `print()` 時甚至幫我們省略了反斜線!另外,字串的實際長度也不會因為那兩個反斜線而變長,跳脫字元可說是相當地方便! ## + 運算符號 就像數字的加減乘除,以及布林值的 `and` 與 `or` 之外,字串也是擁有自己的運算符號的!Python 中,字串的運算符號都相當地直覺,例如**加號** `+` 的作用,就是將兩個字串相連: ``` greet = "Hello, " name = "Kyle" output = greet + name print(output) ``` 這段程式的第三行,可以清楚地看到我們用加號 `+` 將兩段字串連在一起。如果執行這段程式,我們可以看到這樣的結果: ``` Hello, Kyle ``` 我們也可以使用 `+=` 這個運算符號: ``` string = "Hi, " string += "Amy!" print(string) ``` 將會產生這樣的結果: ``` Hi, Amy! ``` ## * 運算符號 跟數字的運算一樣,在 Python 中,字串也有乘號 `*` 這個運算符號。我們都知道,在數字運算的時候, `3 * 3 = 9` 是絕對成立的,但是如果是字串的乘法呢? 相信你也已經猜到了,字串的乘法就是將字串不斷重複的意思!讓我們看看下面這個例子: ``` say1 = "Hi. " say3 = say1 * 3 print(say3) ``` 執行之後我們可以得到這樣的結果: ``` Hi. Hi. Hi. ``` 如果今天字串是一個變數,那我們也可以使用 `*=` 這樣的運算符號,像是: ``` string = "Hi! " string *= 3 print(string) ``` 將會輸出: ``` Hi! Hi! Hi! ``` ## in 運算符號 在 Python 中,還有一個相當方便的字串運算符號—`in`。「in」這個英文字本身就帶有「在…中」的意思,顧名思義,用在字串上的時候,`in` 運算符號就代表「在…字串中」的意思。 這樣講起來似乎有些抽象,讓我們想想看接下來的這個例子:現在有一個字串變數,我們要確定這個字串中是否有英文字母 a,要怎麼做呢?這種時候,`in` 就是一個相當方便的工具了: ``` string = "Hi there" print("a" in string) ``` 上面這段程式,將會 `print()` 出: ``` False ``` 看清楚發生什麼事情了嗎?讓我們來回顧一下:我們先是宣告了一個變數,並將其值設為字串「Hi there」。接著,我們印出 `"a" in string`,而 `in` 的意思是「在…字串中」,在此,「a」並不存在於「Hi there」中,因此電腦印出 False 的結果。 讓我們再多用幾個例子來練習: ``` print("com" in "computer") print("An" in "Dan") print("No" in "No one is here.") print("p" in "composition") ``` 將會印出: ``` True False True True ``` 此處可以注意的是,第二行的 `print("An" in "Dan")` 印出了 False,由此可知,相同字母但是大小寫不同,是不會被 `in` 運算符號考慮成相等的。事實上,大寫和小寫字母對於電腦來說就是兩個完全不同的東西呢! ## len() 當我們看到一個書上句子時,我們會想到它的那些特性呢?很顯然地,我們首先想到的就是這個句子的**長度**。現在,將我們書上會看到的句子想成是字串,在程式語言中,字串也是有長度的! 假設現在給你一個字串變數,像這樣: ``` test = "This is a sentence." ``` 接著,我們要問你這個字串中有幾個字元,你要如何回答呢?當然,我們不可能要求電腦一個一個字母數出來給我們聽(其實應該可以),那麼究竟怎麼達到這個目的呢? `len()` 這個東西,就是專門出現在這種時候的啦!使用 `len()`,我們就可以不費一絲力氣地得到字串的長度: ``` print(len(test)) ``` 將會印出: ``` 19 ``` 現在,讓我們來數數看,`"This is a sentence."` 中有幾個字元吧!請注意,引號 `""` 並不是字串的一部分。是不是真的 19 個字元呢?這麼一來,我們若被要求得到一個字串的長度,就可以使用 `len()` 了!
複製內容