Python 中的字串


我們對於字串,都有一定的直覺瞭解—不論你有沒有在程式中使用字串的經驗。那是因為,「字串」的概念,已經深深地植入在我們的日常生活中。字串,顧名思義就是一串字。

在 Python 中,字串扮演著一個極度重要的角色,它是一種 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() 時甚至幫我們省略了反斜線!另外,字串的實際長度也不會因為那兩個反斜線而變長,跳脫字元可說是相當地方便!


+ 運算符號


就像數字的加減乘除,以及布林值的 andor 之外,字串也是擁有自己的運算符號的!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() 了!

上一章節
下一章節
使用者分享的影片來自 YouTube。瞭解更多
+1 
感謝內容貢獻者 此篇文章由 1 位使用者共同編輯而成,並且由學呀的編輯團隊負責維護。點此查看編輯者名單。