What's string?
- " " 跟 ' ' 包起來的東西
- e.g. "123", 'hi'
隨堂練習-1
以下何者是string呢?
- "123"
- "123 " "
- "123'123"'
- '213213'"'
Solution
- "123" 正解
- "123""
- "123'123"'
- '213213'"'
日常生活中的string
- 密碼學(凱薩加密)
- 資料格式轉換
- "10 : 10 : 10" -> "10h 10m 10s"
共通點-1
- len
- len("123") => 3
- len([1,2,3]) => 3
- index
- "123"[1] => "2"
- [1,2,3][1] => 2
- in
- "123" in "123456" => True
- 123 in [123,234,345] => True
共通點-2 : Traverse
| for i in "123": |
| print(i) |
| |
| for i in [1,2,3]: |
| print(i) |
非共通點 : Immutable
試試看以下的Code
| a = [1,2,3] |
| a[2] = 1 |
| |
| b = "123" |
| b[2] = "1" |
TypeError
- 'str' object does not support item assignment
- string裡的元件不能被更換

[字串變數].replace()
- string.replace(str1,str2)
- 將string裡的str1都換成str2
牛刀小試
"112312312323".replace("123","")
- "123"
- ""
Example
| a = "rilakeeeeeeee" |
| print(a.replace("e","")) |
| |
[字串變數].split()
- string.split(str,n)
- 從string裡所有str的地方斷開,最多斷n個,也可以不要寫n
Example
| a = "rilak,achin,pie,arbuz" |
| a.split(",") |
| |
| a.split(",",2) |
| |
[字串變數].find()
- string.find(str,start)
- 從第start個字開始找str,回傳其index,start可不填
Example
| a = "rilak achine pie arbuz" |
| a.find("e ") |
| |
| a.find("e ",12) |
| |
練習
- 3042 : 傳奇野豬騎士陳刀III
- 3045 : 野豬騎士史記 I
[字串變數].join()
- string.join(list)
- 以string為連接字串,將list裡的東西串在一起
- Warning : list裡都要是字串
Example
| a = ["hortune","rilak","sky","buzz"] |
| ", ".join(a) |
| |
字元的list
string其實某種意義上是字元的list,所以list的slicing操作都可以使用
"字串變數"[start : end : change]
- start : index 初始值
- end : index 終止值
- change : index 變化量
Example
| a = "Hello world" |
| a[:a.find(" ")] |
| |
| a[a.find(" ")+1:] |
| |
| a[::-1] |
| |
Example
| "hello".upper() |
| |
| |
| "HELLO".lower() |
| |
| |
| "123".isalpha() |
| |
| |
| "abc".isalpha() |
| |
加法 (concat)
| a = "Hi " |
| b = "Sprouts" |
| a + b |
| |
相等 (equal)
| "123" == "321" |
| |
| |
| "1" == "1" |
| |
不相等
| "123" != "321" |
| |
| |
| "1" != "1" |
| |
大於小於??
| 10123123 > 11 |
| |
| "10123123" > "11" |
| |
字典序
- python的字串比較是一個字一個字依照ascii下去比,"1"跟"1"一樣大,於是比下一個字,"0"小於"1",所以"11"比較大。
- 詳細可以去看Ascii跟ord和chr兩個function
情境
- 資料格式轉換
- "10 : 10 : 10" -> "10h 10m 10s"
You write?
| string = "10 : 10 : 10" |
| numbers = string.split(" : ") |
| print(numbers[0]+"h ",numbers[1]+"m",numbers[2]+"s") |
Elegant Way
| string = "10 : 10 : 10" |
| "{}h {}m {}s".format(*string.split(" : ")) |
Example
把後面塞進去
| "{}".format(1) |
| |
| |
| "{} {}".format(1,2) |
| |
回到剛剛
| string = "10 : 10 : 10" |
| "{}h {}m {}s".format(*string.split(" : ")) |
想成
| string = "10 : 10 : 10" |
| "{}h {}m {}s".format(10,10,10) |
小知識 : *
- * list可以用來展開list,然後當成function的input。
Advance
"{} {}".format(1,2)
"{0} {1}".format(1,2)
"{1} {0}".format(1,2)
String 字串
{"metaMigratedAt":"2023-06-14T15:41:06.790Z","metaMigratedFrom":"YAML","title":"String","breaks":true,"slideOptions":"{\"theme\":\"solarized\",\"transition\":\"fade\"}","contributors":"[]"}