**srt()實現數字轉字符串**
str()可以把其他類型的數據轉換成字符串
例:srt(5.20) 會轉譯成 '5.20' srt(3.14e2) 會轉譯成 '314.0' str(True) 會轉譯成 'True'
當我們調用print()函數時,解釋器自動調用了str() 將非字符串的對象轉成了字符串。
<br>
**replace() 字符串替換**
>[danger] 注:字符串時不可改變的,所以replace() 生成的是一個新的字符串 并不會改變老的字符串
```
>>>a = 'abcdefghijklmnopqrstuvwxyz'
>>>a.replace('c','浩哥')
'ab浩哥defghijklmnopqrstuvwxyz'
>>>a # a的值并沒有改變
'abcdefghijklmnopqrstuvwxyz'
>>>a = a.replace('c','哈哈')
>>>a
'ab哈哈defghijklmnopqrstuvwxyz'
```
<br>
**字符串切片(截取) slice 操作**
切片 slice 操作可以讓我們快速的提取字符串。標準格式為:
[起始偏移量start:終止怕偏移量 end: 步長 strp]
a = 'abcdefghijk'
| 操作 | 示例 | 結果 |
| --- | --- | --- |
| [:] 提取整個字符串 | a[:] | 'abcdef' |
| [start:] 從start索引開始 | a[2:] | 'cdef' |
| [:end] 從頭開始到end結束 | a[:2] | 'ab' |
| [start:end] 從start開始到end結束 | a[2:4] | 'cd' |
| [start:end:step] 從start開始到end結束 ,步長step | a[1:11:2] | 'bdfhj' |
如果為負數
| 操作 | 說明 | 結果 |
| --- | --- | --- |
| a[-3:] | 倒數3個 | 'ijk' |
| [-5:-3] | 倒數第5個到倒數第三個 | 'hi' |
| [::-1] | 步長為負,反向提取 | 'kjihgfedcba' |
<br>
**split() 分割和 join() 合并**
split() 可以指定分隔符將字符串分割成多個字符串(儲存在列表中)。如果不指定分隔符,則默認使用空白符(換行符/空格/制表符)
例:
```
# 字符串轉數組
>>>a = 'to be or not to be'
>>>a.split()
['to', 'be', 'or', 'not', 'to', 'be']
>>>a = 'a,b,c,d,e'
['a,b,c,d,e']
# 數組轉字符串用空格分割
>>>a=['a,b,c,d,e']
>>>a = ['a','b','c','d','e','f']
>>>' '.join(a)
'a b c d e f'
```
<br>
**成員操作符**
in/not in 關鍵字, 判斷某個字符是否存在于字符串中
```
>>>a = 'htsrdffgsd'
>>>'ht' in a
True
```
<br>
**字符串格式化**
基本語法用過 **{}** 和 **:** 來代理以前的 **%**
format 函數不限參數,位置可以不按順序
```
>>>a = '我是你:{0},年齡是:{1}'
>>>a.format('爸爸','44')
'我是你:爸爸,年齡是:44'
>>>b = '我是你:{0},你是我{1},{0}永遠愛你'
>>>b.format('爸爸','兒子')
'我是你:爸爸,你是我兒子,爸爸永遠愛你'
>>>c = '我是{name},今年{age},是個{label}'
>>>c.format(name='hao ge',age=18,label="精神小伙")
'我是hao ge,今年18,是個精神小伙'
```
<br>
**常用查找方法**
a = '''我是你爸爸,你是我兒子,但你是個逆子,所以我不認你了'''
| 方法和使用示例 | 說明 | 結果 |
| --- | --- | --- |
| len(a) | 獲取字符串長度 | 26 |
| a.startswith('我是') | 判斷是否以指定字符串開頭 | True |
| a.endswith('你了') | 判斷是否以指定字符串開頭 | True |
| a.find('兒子') | 第一次出現指定字符串的位置 | 9 |
| a.rfind('逆子') | 最后一次出現指定字符串的位置 | 16 |
| a.count('是') | 統計指定字符串共出現過幾次 | 3 |
| a.isalnum() | 判斷所有字符串是否全是數組或字母 | False |
<br>
**去除首尾信息**
通過 strip() 去除字符串首尾指定信息
通過 lstrip() 去除字符串左邊的指定字符信息
通過 rstrip() 去除字符串右邊的指定字符信息
a = ',1,2,3,'
```
>>>a.strip(',')
'1,2,3'
>>>a.lstrip(',')
'1,2,3,'
>>>a.rstrip(',')
',1,2,3'
```
<br>
**大小寫轉換**
a = 'wo shi ni baba ni shi WO er zi',
| 示例 | 說明 | 結果 |
| --- | --- | --- |
| a.capitalize() | 產生新的字符串,第一個單詞首字母大寫 | 'Wo shi ni baba ni shi wo er zi' |
| a.title() | 產生新的字符串,每個單詞首字母大寫 | 'Wo Shi Ni Baba Ni Shi Wo Er Zi' |
| a.upper() | 產生新的字符串,所有字母大寫 | 'WO SHI NI BABA NI SHI WO ER ZI' |
| a.lower() | 產生新的字符串,所有字母小寫 | 'wo shi ni baba ni shi wo er zi' |
| a.swapcase() | 產生新的字符串,所有字母大小寫互換 | 'WO SHI NI BABA NI SHI wo ER ZI' |
<br>
**格式排版**
center()、ljust()、rjust()這單個函數用戶對字符串實現排版
a = 'hao ge'
```
>>>a.center(20,'-')
'-------hao ge-------'
>>>a.ljust(10,'*')
'hao ge****'
>>>a.rjust(10)
' hao ge'
```
其他方法
* isalnum() 是否為字母或數字
* isalpha() 檢測字符串是否只由字母組成(含漢字)
* isdigit() 檢測字符串是否只有數字組成
* isspace() 檢測是否為空白符
* isupper() 是否為大寫字母
* islower() 是否為小寫字母