### 數(shù)據(jù)類型詳解-字符串
+ 回顧字符串的定義方式
+ 了解轉(zhuǎn)義字符
+ 字符串相關(guān)的操作
+ 字符串格式化的方法
+ 字符串相關(guān)函數(shù)
### 字符串的定義方式
1. 單引號定義字符串 ‘ ’
2. 雙引號定義字符串 “ ”
3. 三引號定義字符串 ‘’‘內(nèi)容’‘’或者 “”“內(nèi)容”“”
4. 字符串定義時奕剃,引號可以互相嵌套
### 轉(zhuǎn)義字符
> 一個普通的字符出現(xiàn)在轉(zhuǎn)義符 \ 的后面時栋齿,實現(xiàn)了另外一種意義
+ \ 轉(zhuǎn)義符袍镀,續(xù)行符渠脉。
?+ 作為轉(zhuǎn)義符時,在\后面出現(xiàn)的字符可能會實現(xiàn)另外一種意義户敬。
?+ 作為續(xù)行符時际长,在行尾使用了\后熙参,可以換行繼續(xù)書寫內(nèi)容
+ \n 代表一個換行符
+ \r 代表光標位置(從\r出現(xiàn)的位置開始作為光標的起點)
+ \t 代表一個水平制表符(table 縮進)
+ \b 代表一個退格符
+ `\\` 反轉(zhuǎn)義\,輸出了\捞蛋,取消\的轉(zhuǎn)義效果
**把轉(zhuǎn)義字符作為普通字符輸出,在字符串的前面加 r' '**
示例:
```python
# \ 續(xù)行符
#續(xù)行符
# vars = '123' \
#????'456'
# print(vars)
# \ 轉(zhuǎn)義符孝冒,在字符出現(xiàn)的特定字符有著特定的意義
# \n?代表一個換行符
# vars = '歲月是把殺豬刀柬姚,\n\n但是它拿長得丑的人一點辦法都沒有拟杉。。量承。'
# \r 代表光標的位置(從\r出現(xiàn)的位置開始作為光標的起點)
# vars = '歲月是把殺豬刀搬设,\r但是它拿長得丑的人一點辦法都沒有。撕捍。拿穴。'
# \t 水平制表符(table 縮進)
# vars = '歲月是把殺豬刀,\t但是它拿長得丑的人一點辦法都沒有忧风。默色。。'
# \b 退格符
# vars = '歲月是把殺豬刀狮腿,\b但是它拿長得丑的人一點辦法都沒有腿宰。。缘厢。'
# \\ 一個\是轉(zhuǎn)義符吃度,在這個符號前在定義一個\ 就會取消轉(zhuǎn)義。變成一個普通的\輸出
# vars = '歲月是把殺豬刀贴硫,\\n但是它拿長得丑的人一點辦法都沒有椿每。。英遭。'
# 把轉(zhuǎn)義字符作為普通字符輸出,在字符串的前面加 r''
vars = r'歲月是把殺豬刀间护,\b但是它拿長得丑的人一點辦法都沒有。挖诸。汁尺。'
print(vars)
```
### 字符串相關(guān)的操作
+ 字符串 + 操作
+ 字符串 * 操作
+ 字符串 [] 切片操作
?+ 字符串[開始值:結(jié)束值:步進值]
??開始值:默認為0,結(jié)束值默認是最后一個下標税灌,步進值默認為1
示例:
```python
# - 字符串 + 操作
vara = '君不見均函,黃河之水天上來,奔流到海不復(fù)回.'
varb = '君不見菱涤,高堂明鏡悲白發(fā)苞也,朝如青絲暮成雪'
# res = vara + varb
res = '將進酒 '+'李白'
# print(res)
# - 字符串 * 操作
# vars = '雞你太美,' * 5
# print(vars)
# 雞你太美雞你太美雞你太美雞你太美雞你太美
# - 字符串 [] 切片操作 ****
# 字符串的索引操作,字符串中只能使用[]下標 訪問粘秆,不能修改
'''
0 1 2 3 4 5 6 7 8 9 10 ....
君不見如迟,黃河之水天上來,奔流到海不復(fù)回
??????????-4 -3 -2 -1
'''
vars = '君不見,黃河之水天上來殷勘,奔流到海不復(fù)回'
# print(vars[5])
# print(vars[-5])
'''
字符串的切片操作
str[開始值:結(jié)束值:步進值]
開始值:默認為0此再,結(jié)束值默認是最后一個下標,步進值默認為1
'''
# print(vars)
# print(vars[5]) # 寫一個值就是獲取指定下標的元素
# print(vars[2:5]) # 從2下標開始取值玲销,一直到下標5之前输拇,能取到2,取不到5
# print(vars[4:8:2]) # 黃河之水 ==> 黃之
# print(vars[::]) # 從頭取到尾
# print(vars[::2]) # 從頭取到尾贤斜,每隔一個取一個
# print(vars[::-1])?# 字符串倒轉(zhuǎn)過來
# print(vars[::-2])?# 字符串倒轉(zhuǎn)過來策吠,每隔一個取一個
# print(vars[1::])?# 不見,黃河之水天上來瘩绒,奔流到海不復(fù)回
# print(vars[1::2])?# 不猴抹,河水上,流海復(fù)
```
### 字符串格式化的方法
+ format
+ f
示例:
```python
# 1 format?普通方式
a = '李白'
# vars = '{}乘舟將欲行锁荔,互聞岸上踏歌聲'.format(a)
# vars = '{}乘舟將欲行蟀给,互聞岸上{}'.format(a,'踏歌聲')
# 2 format?通過索引傳參??????????????0??1??2
# vars = '{2}乘舟將欲行,互聞岸上{1}'.format('a','b','c')
# 3 format?關(guān)鍵字傳參
# vars = '{a}乘舟將欲行阳堕,互聞岸上跋理'.format(a='李白',b='踏歌聲')
# 4 format?容器類型數(shù)據(jù)傳參
# vars = '豪放派:{0[0]},婉約派:{0[1]}嘱丢,蛋黃派:{0[2]}'.format(['李白','辛棄疾','達利園'])
data = {'a':'辛棄疾','b':'蛋黃派'}
vars = '{a}乘舟將欲行薪介,互聞岸上'.format(**data)
# 3.7中新增的 格式化方法 f方法
vars = f'{data["a"]}乘舟將欲行越驻,互聞岸上{data["b"]}'
# print(vars)
# 限定小數(shù)的位數(shù)
# vars = '圓周率是多少:{:.2f}'.format(3.1415926)
# print(vars)
```
### 字符串相關(guān)函數(shù)
> 官方文檔:內(nèi)置類型:字符串
>
> https://docs.python.org/3.7/library/stdtypes.html#text-sequence-type-str
#### (一) 英文字符與字符檢測相關(guān)函數(shù)
```python
# 字符串相關(guān)函數(shù) (一) 英文字符與字符檢測相關(guān)函數(shù)
vars = 'iloveyou'
# 返回字符串的副本汁政,該字符串的首個字符大寫,其余小寫缀旁。
# str.capitalize()
res = vars.capitalize()
# 把字符串中的一個單詞的首字母大寫
res = vars.title()
# 把字符串全部改為 大寫
res = vars.upper()
# 把字符串全部改為 小寫
res = vars.lower()
# 字符串中的大小寫字符轉(zhuǎn)換记劈,大寫轉(zhuǎn)小寫,小寫轉(zhuǎn)大寫
res = vars.swapcase()
# 檢測字符串是否為全部大寫字母組成
res = vars.isupper()
# 檢測字符串是否為全部小寫字母組成
res = vars.islower()
# 檢測字符串是否符合標題title的要求
res = vars.istitle()
# 檢測字符串是否由數(shù)字和字母組成并巍,如果字符串中包含來非數(shù)字字母的其它字符目木,則返回False
res = vars.isalnum()
# 檢測字符串是否全部由字符(包含英文字符和中文)組成
res = vars.isalpha()
# 檢測字符串是否由純數(shù)字字符組成
res = vars.isdigit()
# 檢測當(dāng)前字符串是否為 空格 字符組成 ' '
res = vars.isspace()
# 檢測字符串是否以指定的字符開始的,也可以指定開始和結(jié)束的位置
res = vars.startswith('y')
# res = vars.startswith('y',5)
# 檢測字符串是否以 指定的字符 結(jié)束的懊渡,也可以指定開始和結(jié)束的位置
# res = vars.endswith('y')
res = vars.endswith('e',1,5)
print(res)
```
#### (二)字符串 查找與操作相關(guān)函數(shù) 重點重點重點
示例:
```python
#?** find() 方法 刽射,找到則返回字符中符合條件的第一個字符出現(xiàn)的索引位置。未找到返回 -1
res = vars.find('you')
# print(vars[res:res+3])
# index() 方法
# res = vars.index('youe') # 找到則返回索引位置剃执,未找到則報錯 ValueError
# print(res)
vars = 'user_admin_id_123'
# ** split() 方法 可以按照指定的分隔符誓禁,把字符串分隔成列表
# res = vars.split('_') # ['user', 'admin', 'id', '123']
res = vars.split('_',2)?# ['user', 'admin', 'id_123']
# print(res)
# rsplit() 方法是從右向左進行,從后向前
# res = vars.rsplit('_')?# ['user', 'admin', 'id', '123']
res = vars.rsplit('_',2)?# ['user_admin', 'id', '123']
# print(res)
# ** join() 方法 肾档,使用指定的字符串摹恰,把一個容器中的元素鏈接成一個字符串
varlist = ['user', 'admin', 'id', '123']
res = '_'.join(varlist)
# ** strip() 去除字符串左右兩側(cè)的指定字符
vars = '?zhangsan?'
res = vars.strip(' ')
vars = '@admin'
res = vars.strip('@')
# print(vars)
# print(res)
# rstrip() 去除字符串右側(cè)的指定字符辫继, lstrip() 去除字符串左側(cè)的指定字符
# ** len() 函數(shù)可以獲取當(dāng)前字符串的長度
# print(len(vars))
# print(len(res))
# ** replace() 替換函數(shù)
vars = 'iloveyou'
# 找到 love?替換為 live
res = vars.replace('love','live')
vars = 'aabbccddeeabcdef'
#?可以限制替換的次數(shù)
res = vars.replace('b','B',2)
# print(res)
```