「作者主頁」:士別三日wyx
此文章已錄入專欄《Python零基礎入門》
人生苦短,我用 Python —— Life is short,you need Python

字串詳解
- 1、字串的定義
- 1)單引號字串
- 2)雙引號字串
- 3)多行字串
- 4)列印字串
- 2、字串拼接
- 3、檢查字串
- 4、字串是陣列
- 1)訪問字串的元素
- 2)截取字串的元素
- 5、常用方法
- len() 獲取字串長度
- strip() 洗掉開頭和結尾的空格
- lower() 全部小寫
- upper() 全部大寫
- replace() 替換字串
- split() 按照分隔符轉換陣列
- format() 格式化
- capitalize() 首字母大寫
- count() 出現次數
- find() 首次出現的位置
- isalnum() 純字母數字
- isalpha() 純字母
- isdigit() 純數字
- islower() 是否全部小寫
- isupper() 是否全部大寫
- join() 陣列轉字串
- rfind() 最后一次出現的位置
- startswith() 是否以指定字符開頭
字串是Python中 「最常用」的一種資料型別,用來保存一段 「文本」資訊,英文用 String 表示,
1、字串的定義
Python中字串有「兩種」定義方式:
- 單引號字串
- 雙引號字串
需要注意的是,單引號和雙引號只是字串支持的兩種定義方式,兩者定義的內容「沒有區別」,
1)單引號字串
「單引號字串」顧名思義,就是使用單引號包裹的字串;定義單引號字串時需要使用單引號將文本「內容」包裹起來,
案例1:定義一個單引號字串
# 定義單引號字串
str1 = '單引號字串'
# 列印字串內容
print(str1)
執行結果:

2)雙引號字串
「雙引號字串」顧名思義,就是使用雙引號包裹的字串;定義雙引號字串時需要使用雙引號將文本「內容」包裹起來,
案例2:定義一個雙引號字串
# 定義雙引號字串
str2 = "雙引號字串"
# 列印字串內容
print(str2)
執行結果:

3)多行字串
「多行字串」顧名思義,就是包含多行文本內容的「一個」字串;定義多行字串時,需要使用「三個雙引號」或者「三個單引號」將多行文本內容包裹起來,多行字串可以保留文本的換行、縮進等格式,常用來定義「特殊格式」的文本內容,比如一首詩、一段歌詞,
案例3:列印一首詩
# 定義單引號多行字串
str1 = '''
昨夜吳中雪,子猷佳興發,萬里浮云卷碧山,
青天中道流孤月,孤月滄浪河漢清,北斗錯落長庚明,
懷余對酒夜霜白,玉床金井水崢嶸,人生飄忽百年內,
且須酣暢萬古情,
——李白《答王十二寒夜獨酌有懷》
'''
# 列印字串內容
print(str1)
執行結果:

案例四:列印一段歌詞
# 定義雙引號多行字串
str2 = """
《咸魚》
我沒有任何天分
我卻有夢的天真
我是傻不是蠢
我將會證明用我的一生
我如果有夢有沒有錯
錯過才會更加明白明白堅持是什么
我不好也不壞不特別出眾我只是敢不同
我的人生就是一錯再錯錯完了再從頭
"""
# 列印字串內容
print(str2)
執行結果:

4)列印字串
Python中的變數可以直接使用 print()「列印」 出來,而不是必須先定義變數「賦值」才能使用;
案例5:列印文本內容
# 直接列印文本內容
print('hello word')
print("hello word")
執行結果:

2、字串拼接
多個字串之間可以使用 + 運算子「拼接」 成一個字串;需要注意的是,參與拼接的「源字串」 本身不會改變,拼接后會生成一個新的字串,
案例6:將變數 a 和變數 b 拼接成變數 c
a = 'hello'
b = 'world'
c = a + b
print(c)
執行結果:

案例7:在變數 a、變數 b 之間添加一個空格
a = 'hello'
b = 'world'
c = a + ' ' + b
print(c)
執行結果:

案例8:字串和數字拼接
a = 'hello'
b = 1 # 數字型變數
c = a + b
print(c)
執行結果:

需要注意的是,字串只能和字串進行拼接,和「其他型別」的變數拼接時,會報錯,
3、檢查字串
如果需要「檢查」字串中是否存在特定內容或字符,我們可以使用 in 或 not in 關鍵字,其中 in 關鍵字用來檢測是否包含指定內容,如果包含則回傳 True ,不包含則回傳 False ;not in 則相反,如果不包含則回傳 True ,包含則回傳 False,
案例9:檢查一段文字中是否包含指定內容
str1 = 'hello world'
result = 'world' in str1
print(result)
執行結果:

案例10:檢查一段文字中是否不包含指定內容
str1 = 'hello world'
result = 'world' not in str1
print(result)
執行結果:

4、字串是陣列
嚴格意義上來說,Python中并沒有字符資料型別,「單個字符」就是就是長度為 1 的字串,包含「多個字符」的“字串”是一個位元組陣列,平時為了方便,我們還是將其叫做字串型別變數,
什么意思呢?就比如a = 's' ,這個變數 a 只有一個字符,這是真正意義上的「字串」;而 b = 'sss',這個變數 b 實際上是一個包含了多個字串的「字符陣列」,
1)訪問字串的元素
字符陣列中的每一個字串被稱為一個「元素」,即 字符 = 元素;比如 a = 'abc',這個變數 a,字符a是一個元素,字符b是一個元素,字符c也是一個元素,
使用「方括號」訪問字串的元素,方括號中填寫需要訪問的元素的「索引」,索引可以簡單理解為元素在陣列中的「位置」,從左到右依次是0,1,2…,需要注意的是,索引是從 0 開始的,
案例11:獲取第一個位置的元素
str1 = 'hello world'
s = str1[0]
print(s)
執行結果:

2)截取字串的元素
可以同時訪問多個元素,而不是一次只能訪問一個元素,準確的說是「訪問」一個指定「范圍」內的元素,需要指定「開始」索引和「結束」索引,中間使用冒號分隔,可以簡單理解為截取字串中的元素,截取的范圍包含開始索引,但不包含結束索引,即 [ 開始索引 :結束索引 )
案例12:截取位置1到位置4的元素
str1 = 'hello world'
s = str1[1:4]
print(s)
執行結果:

負的索引
需要注意的是,訪問指定范圍的元素時,可以指定「負數」索引,負的索引從字符陣列最右邊開始依次是1,2,3…,也就是從「末尾」開始截取,
案例13:截取倒數第6個位置至倒數第2個位置的元素
str1 = 'hello world'
s = str1[-6: -2]
print(s)
執行結果:

5、常用方法
字串的所有方法都會回傳一個「新值」,原來的字串則不會被「改變」,
len() 獲取字串長度
用來獲取字串的「長度」,需要傳遞一個「變數」引數,回傳字串的長度(int 型別)
案例14:名字有幾個字符
name = 'zhangsan'
le = len(name)
print(le)
執行結果:

strip() 洗掉開頭和結尾的空格
用來「洗掉」開頭和結尾的「空白」字符,回傳一個洗掉后的字串型別的變數,
案例15:洗掉兩側的空格
text = ' Hello Python '
t = text.strip()
print(t)
執行結果:

lower() 全部小寫
用來將字串轉換為「小寫」,回傳一個全部小寫的字串型別的變數,
案例16:將姓名全部小寫
name = 'ZhangSan'
s = name.lower()
print(s)
執行結果:

upper() 全部大寫
用來將字串轉換為「大寫」,回傳一個全部大寫的字串型別的變數,
案例17:將名字全部大寫
name = 'China'
s = name.upper()
print(s)
執行結果:

replace() 替換字串
用來「替換」字串
- 引數1:需要被替換的內容(字串型別)
- 引數2:替換后的內容(字串型別)
- 回傳值:替換后的字串(字串型別)
案例18:將“姓名”替換為“張三”
name = '我叫姓名'
s = name.replace('姓名', '張三')
print(s)
執行結果:

split() 按照分隔符轉換陣列
將字串按照指定「分隔符」轉換為「陣列」
- 引數1:分隔符(字串型別)
- 回傳值:轉換后的陣列
案例19:按照逗號分隔成陣列
names = 'ZhangSan,liSi,WangWu,ZhaoLiu'
arr = names.split(',')
print(arr)
執行結果:

format() 格式化
用來「格式化」變數,并放在占位符{}所在的字串中,前面我們提到過字串和其他型別的變數不能使用加號拼接,而format()可以實作字串和其他資料型別的拼接,
案例20:字串拼接數字
age = 18
text = '我今年{}歲'
t = text.format(age)
print(t)
執行結果:

多個引數
format() 可以接收多個引數,并將每個引數按照「順序」順序拼接到「對應」的占位符{}中;簡單來說就是傳遞多個引數,同時提供多個占位符,引數和占位符按照從左到右的順序一一對應,
案例21:成員名單
names = ['張三', '李四', '王五', '趙六']
text = '本期獲獎名單是:{},{},{},{}'
t = text.format(names[0], names[1], names[2], names[3])
print(t)
執行結果:

占位符索引
format() 在拼接多個變數時,默認按照從左到右的順序拼接,如果想「自定義」自定義拼接的順序(位置),可以使用占位符的索引{1}來確保引數拼接到正確的位置,
案例22:個人資訊
name = '張三'
age = 18
money = 100.0
text = '我叫{1},今年{0}歲,工資是{2}元'
t = text.format(age, name, money)
print(t)
執行結果:

capitalize() 首字母大寫
將字串的「首字母」轉換為大寫,并回傳修改后的字串,
案例23:姓首字母大寫
name = 'zhang'
s = name.capitalize()
print(s)
執行結果:

count() 出現次數
用來獲取指定內容在字串中出現的「次數」
- 引數1:必需,字串,需要檢查的內容
- 引數2:可選,整數,開始的位置,默認是0
- 引數3:可選,整數,結束的位置,默認是結尾
- 回傳值:整數,出現的次數
案例24:統計大爺出現的次數
text = '大爺帶著二大爺到三大爺家說四大爺別五大爺騙到六大爺家偷七大爺放在八大爺柜子里九大爺給十大爺的一千元'
n = text.count('大爺')
print(n)
執行結果:

find() 首次出現的位置
用來在字串中「查找」指定內容,如果找到則回傳指定內容在字串中「首次」出現的位置,找不到則回傳 -1
案例25:大爺首次出現的位置
text = '大爺帶著二大爺到三大爺家說四大爺別五大爺騙到六大爺家偷七大爺放在八大爺柜子里九大爺給十大爺的一千元'
n = text.find('大爺')
print(n)
執行結果:

isalnum() 純字母數字
檢查指定字串中是否只包含「數字」和「字母」,即字母(a-z)和數字(0-9),如果是純字母數字則回傳 True,否則回傳 False,
案例26:檢查文本中是否只包含數字和字母
text = 'abc123'
print(text.isalnum())
執行結果:

isalpha() 純字母
檢查指定字串中是否只包含「字母」,即字母(a-z),如果是純字母則回傳 True,否則回傳 False,
案例27:檢查文本是否是純字母
text = 'abc'
print(text.isalpha())
執行結果:

isdigit() 純數字
檢查指定字串中是否只包含「數字」,即數字(0-9),如果是純數字則回傳 True,否則回傳 False,需要注意的是,指數也算作數字,
案例28:檢查文本是否是純數字
text = '123'
print(text.isdigit())
執行結果:

islower() 是否全部小寫
檢查指定字串中的「字母」是否全部都是「小寫」,如果全部小寫則回傳 True,否則回傳 False,需要注意的是,islower()「不檢查」數字、符號和空格,僅檢查字母字符,
案例29:檢查文本是否全部小寫
text1 = ' Hello World! '
text2 = ' hello world! '
print(text1.islower())
print(text2.islower())
執行結果:

isupper() 是否全部大寫
檢查指定字串的「字母」是否全部都是「大寫」,如果全部大寫則回傳 True,否則回傳 False,需要注意的是,isupper()「不檢查」數字、符號和空格,僅檢查字母字符,
案例30:檢查文本是否全部大寫
text1 = ' HELLO 123! '
text2 = ' hello 123! '
print(text1.isupper())
print(text2.isupper())
執行結果:

join() 陣列轉字串
將可迭代物件中所「元素」有按照指定「分隔符」拼接為一個「字串」,可迭代物件指的是串列、元組、字典等,需要注意的是,轉換「字典」時拼接的是「鍵」而不是值,
案例31:將串列中的元素按照逗號拼接成字串
arr = ['張三', '李四', '王五', '趙六']
print(','.join(arr))
執行結果:

案例32:將字典中的元素按照 - 拼接成字串
di = {'name': '張三', 'age': 18}
print('-'.join(di))
執行結果:

rfind() 最后一次出現的位置
查找指定內容在字串中「最后」一次出現的位置,
- 引數1:必需,指定檢查的內容
- 引數2:可選,開始檢查的位置,默認是0
- 引數3:可選,結束檢查的位置,默認是末尾
- 回傳值:整數,最后一次出現的索引位置
案例33:大爺最后一次出現的位置
text = '大爺帶著二大爺到三大爺家說四大爺別五大爺騙到六大爺家偷七大爺放在八大爺柜子里九大爺給十大爺的一千元'
print(text.rfind('大爺'))
執行結果:

startswith() 是否以指定字符開頭
檢查字串是否以指定字符「開頭」,如果以指定字符開頭則回傳 True,否則回傳 False,
案例34:是否以大爺開頭
text = '大爺帶著二大爺到三大爺家說四大爺別五大爺騙到六大爺家偷七大爺放在八大爺柜子里九大爺給十大爺的一千元'
print(text.startswith('大爺'))
執行結果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/339056.html
標籤:其他
上一篇:SpringCloud Gateway API介面安全設計(加密 、簽名)
下一篇:開發到底要不要轉行軟體測驗?
