018 字串型別及操作
阿新 • • 發佈:2020-12-13
目錄
一、概述
- 字串型別的表示
- 字串操作符
- 字串處理函式
- 字串處理方法
- 字串型別的格式化
二、字串型別的表示
由0個或多個字元組成的有序字元序列
- 字串由一對單引號或一對雙引號表示:
"請輸入帶有符號的溫度值: "
'C'
- 字串是字元的有序序列,可以對其中的字元進行索引:
"請"
是"請輸入帶有符號的溫度值: "
的第0個字元
字串有 2類共4種 表示方法
- 由一對單引號或雙引號表示,僅表示單行字串:
"請輸入帶有符號的溫度值: "
或者'C'
- 由一對三單引號或三雙引號表示,可表示多行字串
'''
Python
語言
'''
- 如果希望在字串中包含雙引號或單引號呢?:
'這裡有個雙引號(")'
或者"這裡有個單引號(')"
- 如果希望在字串中既包括單引號又包括雙引號呢?:
''' 這裡既有單引號(')又有雙引號 (") '''
2.1 字串的序號
正向遞增序號 和 反向遞減序號
2.2 字串的使用
使用[ ]獲取字串中一個或多個字元
- 索引:返回字串中單個字元
<字串>[M]
:"請輸入帶有符號的溫度值: "[0]
或者TempStr[-1]
- 切片:返回字串中一段字元子串
<字串>[M: N]
:"請輸入帶有符號的溫度值: "[1:3]
或者TempStr[0:-1]
2.3 字串切片高階用法
使用[M: N: K]
根據步長對字串切片
<字串>[M: N],M
缺失表示至開頭,N缺失表示至結尾:"〇一二三四五六七八九十"[:3]
結果是"〇一二"
- <字串>[M: N: K],根據步長K對字串切片:
"〇一二三四五六七八九十"[1:8:2]
"一三五七"
"〇一二三四五六七八九十"[::-1]
結果是"十九八七六五四三二一〇
2.4 字串的特殊字元——轉義符 \
- 轉義符表達特定字元的本意:
"這裡有個雙引號(\")"
結果為這裡有個雙引號(")
- 轉義符形成一些組合,表達一些不可列印的含義:
"\b"
回退"\n"
換行(游標移動到下行首)"\r"
回車(游標移動到本行首)
三、字串操作符
3.1 由0個或多個字元組成的有序字元序列
操作符及使用 | 描述 |
---|---|
x+y | 連線兩個字串x和y |
n*x 或 x*n | 複製n次字串x |
x in s | 如果x是s的子串,返回True,否則返回False |
3.2 獲取星期字串
- 輸入:1-7的整數,表示星期幾
- 輸出:輸入整數對應的星期字串
- 例如:輸入3,輸出 星期三
# WeekNamePrintV1.py
weekStr = "星期一星期二星期三星期四星期五星期六星期日"
weekId = eval(input("請輸入星期數字(1-7):"))
pos = (weekId – 1 ) * 3
print(weekStr[pos: pos+3])
# WeekNamePrintV2.py
weekStr = "一二三四五六日"
weekId = eval(input("請輸入星期數字(1-7):"))
print("星期" + weekStr[weekId-1])
四、字串處理函式
一些以函式形式提供的字串處理功能
函式及使用 | 描述 |
---|---|
len(x) | 長度,返回字串x的長度:len("一二三456") 結果為 6 |
str(x) | 任意型別x所對應的字串形式:str(1.23) 結果為"1.23" str([1,2]) 結果為"[1,2]" |
hex(x) 或 oct(x) | 整數x的十六進位制或八進位制小寫形式字串:hex(425) 結果為"0x1a9" oct(425) 結果為"0o651" |
chr(u) | x為Unicode編碼,返回其對應的字元 |
ord(x) | x為字元,返回其對應的Unicode編碼 |
4.1 Unicode編碼
Python字串的編碼方式
- 統一字元編碼,即覆蓋幾乎所有字元的編碼方式
- 從0到1114111 (0x10FFFF)空間,每個編碼對應一個字元
- Python字串中每個字元都是Unicode編碼字元
4.1.1 一些有趣的例子
"1 + 1 = 2 " + chr(10004)
'1 + 1 = 2 ✔'
"這個字元♉的Unicode值是:" + str(ord("♉"))
'這個字元♉的Unicode值是:9801'
for i in range(12):
print(chr(9800 + i), end="")
♈♉♊♋♌♍♎♏♐♑♒♓
五、字串處理方法
"方法"在程式設計中是一個專有名詞
- "方法"特指
<a>.<b>()
風格中的函式<b>()
- 方法本身也是函式,但與
<a>
有關,<a>.<b>()
風格使用 - 字串及變數也是
<a>
,存在一些方法
六、字串內建方法
一些以方法形式提供的字串處理功能
方法及使用 | 描述 |
---|---|
str.lower() 或 str.upper() | 返回字串的副本,全部字元小寫/大寫:"AbCdEfGh".lower() 結果為 "abcdefgh" |
str.split(sep=None) | 返回一個列表,由str根據sep被分隔的部分組成 :"A,B,C".split(",") 結果為['A','B','C'] |
str.count(sub) | 返回子串sub在str中出現的次數:"a apple a day".count("a") 結果為 4 |
str.replace(old, new) | 返回字串str副本,所有old子串被替換為new :"python".replace("n","n456") 結果為 "python456" |
str.center(width[,fillchar]) | 字串str根據寬度width居中,fillchar可選:"python".center(20,"=") 結果為 '=python=' |
str.strip(chars) | 從str中去掉在其左側和右側chars中列出的字元:"= python= ".strip(" =np") 結果為 |
"ytho"
str.join(iter)|在iter變數除最後元素外每個元素後增加一個:str ",".join("12345")
結果為 "1,2,3,4,5" #主要用於字串分隔等
七、字串型別的格式化
格式化是對字串進行格式表達的方式
- 字串格式化使用.format()方法,用法如下:
<模板字串>.format(<逗號分隔的引數>)
- 字串格式化使用f-string方法,用法如下:
f<模板{<逗號分隔的引數>}字串>
7.1 f-string方法的格式控制
{<引數序號> : <格式控制標記>}
: | <填充> | <對齊> | <寬度> | <,> | <.精度> | <型別> |
---|---|---|---|---|---|---|
引導符號 | 用於填充的單個字元 | < 左對齊 > 右對齊 ^ 居中對齊 |
槽設定的輸出寬度 | 數字的千位分隔符 | 浮點數小數 或 字串最大輸出長度 | 整數型別 b,c,d,o,x,X 浮點數型別 e,E,f,% |
"{0:=^20}".format("PYTHON")
'=======PYTHON======='
"{0:*>20}".format("BIT")
'*****************BIT'
"{:10}".format("BIT")
'BIT '
"{0:,.2f}".format(12345.6789)
'12,345.68'
"{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425)
'110101001,Ʃ,425,651,1a9,1A9'
"{0:e},{0:E},{0:f},{0:%}".format(3.14)
'3.140000e+00,3.140000E+00,3.140000,314.000000%'
八、單元小結
- 正向遞增序號、反向遞減序號、<字串>[M:N:K]
- +、*、len()、str()、hex()、oct()、ord()、chr()
- .lower()、.upper()、.split()、.count()、.replace()
- .center()、.strip()、.join()、.format()格式化