*字元(character)與字串(string)
字串(string)是由一連串字元(character)所組成。在Python中以''
or ""
表示。當輸入第二個引號時表示為字串結束地方,若需要表明此處並非結尾處,需要加入\
跳脫(escape),告訴Python此處並非結尾處。
eg:
'I\'m a student.'
隨堂練習: print() 方法搭配跳脫字元(escape)印出 I can't go to school.
print('I can\'t go to scholl.')
*字串基本操作方式: 字串索引index
過index找出想要的"子字串"。在程式語言的世界中是從0開始編號。index-1
則表示從後面數來第一個字元。
表示方式: '字串'[index]。
eg:
language = 'python'
print(language[1])...得到y
or
print('Python[1]')...也是得到y
字元 | P | y | t | h | o | n |
---|---|---|---|---|---|---|
index | 0 | 1 | 2 | 3 | 4 | 5 |
index | -6 | -5 | -4 | -3 | -2 | -1 |
隨堂練習:使用字串索引 index
試著印出,username 變數第一個值和從後數來第二個值。
username = 'Jimmy'
print(username[0])...得J
print(username[-2])...得m
*字串基本操作方式:字串切片 slice
'字串'[起始索引 index : 終止索引 index : 間隔值]
- 起始索引index: 起始取出的子字串
- 終止索引index: 截止取出的子字串
- 間隔值: 間隔多少取值(預設為1),若設定為 2 則代表每 2 個字元為間隔取值
language = 'python' print(language[0:2])...得到py print(language[0:6:2])...得到pto
*字串基本操作方式:字串長度 len
若要取出字串長度可以使用 len() 這個 Python 內建函式回傳的值取得物件長度(注意:符號和空白都算是一個字元長度):
language = 'Python'
print(len(language))...得6
*字串基本操作方式:使用 in 確認子字串是否存在字串
a = 'thon' **in** language
print(a)...得true
or
language_statement = 'Java is better than C'
b = 'Python' **in** language_statement
print(b)...得false
*字串基本操作方式:字串串接 concat
若要串接兩個字串,可以使用+
號
statement='Jump '+'Diffusion'
print(statement)
or
name = 'Jimmy'
statement = 'my' + ' name is '+ name
print(statement)...得 my name is Jimmy
*字串基本操作方式:重複字串
透過 *
可以重複字串:
text = 'Python'*3
print(text)
隨堂練習I:計算使用者輸入字串長度的程式
text = input('請輸入內容: ') print(len(text))
*字串進階操作:字串大小寫轉換 upper/lower
使用方式:
language = 'python'
print(language.upper())
print(language.lower())
*字串進階操作:搜尋字串 find / rfind
(複習:檢查子字串是否存在於字串中)
language ='python'
a = 'p' in language
print(a)...True
若要搜尋字串則使用 find 字串物件方法(注意大小寫是代表不同字),由左至右開始尋找,若有找到則回傳第一次出現的 index 索引值,若沒找到則會回傳 -1。
#由左至右找on位置,位在字元位置4
print(language.find('on'))
#並未存在於字串中,得-1
print(language.find('Jimmy'))
#由右至左尋找py位置,p位於字元0
print(language.rfind('py'))
隨堂練習:請試著使用 find 印出 Python 於字串 statement = 'Life is short, I use Python.' 的位置。
statement ='Life is short, I use Python.'
print(statement.find('Python'))...得21
# index 從 0 開始,數到 21 為 P (含標點符號和空白)
*字串進階操作:取代字串 replace
使用replace取代字串物件。回傳的結果為取代後的字串結果。字串 str 物件在 Python 為 immutable 物件(也就是修改物件內容不會更改到原有物件內容會產生新的物件)
language = 'python'
language_new = language.replace('p','z')
print(language_new)...得zython
language_new2 = language_new.replace('ython','oo')
print(language_new2)...得zoo
*字串進階操作:計算子字串出現次數 count
計算子字串在字串中出現次數則使用 count 字串物件方法(注意: 若是重疊則會忽略,eg: print('zoozooz'.count('zooz'))
...得1
statement = 'I think Life is short, I use Python.'
print(statement.count('I'))
隨堂練習II:取代字串
今天長官交辦一個標錯商品名稱替換成正確名稱的工作給你,要你把所有使用 Java 的地方都改用 Python,請試著使用字串物件的方法進行替換。以下是文件內容:
'Java is awesome, I love Java. Java is a coffee also a language. Java Java!'
text='Java is awesome, I love Java. Java is a coffee also a language. Java Java!'
text_new = text.replace('Java','Python')
print(text_new)
* 字串格式化(formatting)
幾種方式新式字串格式化(format())呈現:
1.新式字串格式化.format()
name = 'Leo'
text = 'world'
sentence = 'hello {}, hello {}'.format(name, text)
print(sentence)...得hello leo, hello world
2.字串插值(Formatted String Literal)
x = 7
y = 41
result = f'x + y = {x + y}'
print(result)
# x + y = 48
事實上,今天若只有串接一個變數在字串中,使用 字串格式化的效果和單純使用 +
差異並不明顯。
但是若今天有三四個以上的變數等較為複雜的情況需要在字串中替換變數呢?以下是分別使用字串格式化和 +
方式印出同樣結果:
text_f_str = f'hello, {var1}. I am {var2}. I come from {var3}'
text_a_str = 'hello, ' + var1 + '. I am ' + var2 + '. I come from ' + var3