一昌渤、字符串
- 字符串(str)是容器型數(shù)據(jù)類型椒楣,他是將單引號('')蕉扮、雙引號("")滩租、三個單引號或三個雙引號(''' '''/""" """)作為容器標(biāo)志
- 字符串有不可變性(不支持增刪改)探膊、有序性(支持下標(biāo)操作)
1杠愧、字符串的元素 ---字符
python中只有字符概念,沒有字符類型逞壁。引號中只有一個元素的字符串可以看成一個字符流济;字符串又叫字符集锐锣。
1)、字符
原則上任何可以通過鍵盤輸入或者從其他地方復(fù)制粘貼的所有符號都可以作為字符
2)绳瘟、普通字符
在字符串中能夠代表符號本身的字符(沒有特殊意義和特殊功能的符號)
3)雕憔、轉(zhuǎn)義字符
在字符串中有特殊意義和特殊功能的字符的組合,一般是以斜杠\開頭的
常見的轉(zhuǎn)義字符:
\n ------> 表示換行
\t ------> 表示一個縮進(jìn)(Tab)
\ ------> 表示斜杠本身
' ------> 表示單引號
" ------> 表示雙引號
\u四位16進(jìn)制數(shù) ------> 編碼字符(獲取四位16進(jìn)制數(shù)作為編碼值對應(yīng)的值)
所有的轉(zhuǎn)義字符長度都是1
4)糖声、阻止轉(zhuǎn)義
在字符串最前面加r/R可以讓當(dāng)前字符串中所有的轉(zhuǎn)義字符失效(所有的符號在字符串中都表示這個符號本身)
str6 = '\tsd\n\'ds123'
str7 = r'\tsd\n\'ds123'
2斤彼、字符編碼
1)、計算機不能直接存儲符號蘸泻,只能存儲數(shù)字琉苇,為了能夠存儲字符,把每個字符關(guān)聯(lián)了一個固定的數(shù)字(這個固定的數(shù)字就是對應(yīng)字符的編碼)
2)悦施、ASCII表在計算機中采用一個字節(jié)保存一個字符(128個字符)翁潘,字符包含了所有的字母、數(shù)字和英文常用符號
? 0-9:編碼值依次增加 歼争; 0對應(yīng)48
? A-Z:編碼值以此增加 ; A對應(yīng)65
? a-z:編碼值依次增加 渗勘; a對應(yīng)97
3)沐绒、Unicode編碼表是ASCII表的擴展,包含了世界上所有國家所有語言對應(yīng)的符號(總共有65536個符號)
? ASCII表范圍:0 - 127
? 中文的編碼范圍:4e00 - 9fa5
方法:
①:編碼字符:\u4位16進(jìn)制數(shù)
②:chr(編碼值(可以是任何進(jìn)制)) - 獲取編碼值對應(yīng)的字符
③:ord(字符) - 獲取指定字符對應(yīng)的編碼值
#獲取所有的中文字符
num = 0
for x in range(0x4e00, 0x9fa5):
print(chr(x))
if num % 35 == 0:
print()
二旺坠、字符串的查(字符串有不可變性(不支持增刪改))
1乔遮、獲取單個字符:字符串[下標(biāo)]
一個空格是一個字符;tab鍵是4個字符取刃;\t是一個字符
2蹋肮、獲取多個字符:切片---字符串[開始下標(biāo):結(jié)束下標(biāo):步長]
3、遍歷:遍歷元素璧疗,遍歷下標(biāo)
str1 = 'hello python'
print(str1[-4])
print(str1[5])
print(str1[2:])
print(str1[:-2:])
三坯辩、字符串的運算和函數(shù)
1、運算符
1)崩侠、加 +, 乘 *
2)漆魔、等 ==, 不等 !=
3)、>, <, >=, <=
字符串比較大小是比較編碼值的大小却音,一個字符一個字符的比較
判斷字符是否是小寫字母:'a'<= char <='z'
判斷字符是否是大寫字母:'A'<= char <='Z'
判斷字符是否是字母:'A'<= char <='Z' or 'a'<= char <='z'
判斷字符是否是中文:'\u4e00' <= char <= '\u9fa5'
判斷字符是否是數(shù)字:'0' <= char <= '9'
# 練習(xí):輸入一個字符串改抡,判斷這個字符串是否是中文字符串(全是中文)
value = input('請輸入:')
for char in value:
if not '\u4e00 <= char <=\u9fa5':
print('不是中文字符串')
break
else:
print('是中文字符串')
2、in 和 not in
字符串1 in 字符串2 -> 判斷字符串2中是否包含字符串1
print('a' in 'abcdf')
print('abc' in 'abcdf') 子串必須是連續(xù)的
3系瓢、相關(guān)函數(shù)
①阿纤、len(字符串)
print(len('\tsdse\ndsdwds\u4e00'))
②、str(數(shù)據(jù))
print(list(str([10,20,30])))
③夷陋、sorted(字符串) 從小到大排序
str1 = 'python'
print(sorted(str1))
④欠拾、reversed(字符串)倒序
四胰锌、格式字符串
1、格式占位符
1)清蚀、語法:包含格式占位符的字符串 % (值1匕荸,值2,值3枷邪,...)
2)榛搔、說明:
% - 固定寫法
() - 若值只有一個,可省略
值 - 任何有結(jié)果的表達(dá)式东揣,值得個數(shù)和類型要與前面的占位符的個數(shù)和類型相同
格式占位符 - 格式占位符使用的時候和字符串中變化的數(shù)據(jù)類型相關(guān)
- ?%s - 字符串(任何類型都可以)
- ?%d - 整型践惑;
- ?%-Nd - 整型;N約束數(shù)字的長度嘶卧,如果不夠尔觉,空格來湊(后面)。如果超了芥吟,不能約束
- ?%-Nd - 整型侦铜;N約束數(shù)字的長度,如果不夠钟鸵,空格來湊(前面)钉稍。如果超了,不能約束
- ?%f - 浮點數(shù)棺耍;小數(shù)點后保留6位
- ?%.Nf - 浮點數(shù)贡未;N約束小數(shù)點的位數(shù)
name = input('請輸入姓名:')
age = int(input('請輸入年紀(jì):'))
print('你好,我是'+ name +'今年',str(age)+'歲')
print('你好蒙袍,我是%s俊卤,今年%d,工資%s' % (name, age, 200))
2害幅、format
1)消恍、語法:一個帶有{}的字符串.format(值1,值2以现,...)
2)哺哼、用法:
①、大括號的個數(shù)和后面的數(shù)值個數(shù)一樣
print('我是{}叼风,今年{}歲'.format('安', 20))
②取董、{N} - N從0開始以此增加、分別表示format中第0個值无宿,第一個值茵汰。。孽鸡。
print('我是{0}蹂午,年紀(jì)是{1}栏豺,今年{1}歲'.format('安', 20))
print('數(shù)據(jù)1:{1},數(shù)據(jù)2:{0}豆胸,數(shù)據(jù)3:{1}奥洼,'.format(10, 20))
③、[key]
'{key1},{key1}'.format(key1=值1晚胡,key2=值2)
print('我是{name}灵奖,年紀(jì)是{age},今年{age}歲'.format(name='安', age=20))
④估盘、用列表給占位符賦值
list1 = [10, 20, 30, 40]
print('{0[3]}, {0[2]}, {0[1]}'.format(list1))
⑤瓷患、用字典給占位符賦值
student = {'name': '小明', 'age':20, 'id': '001', 'score':100}
print('{name}今年{age}歲,學(xué)號:{id},考了{(lán)score}'.format(**student))
⑥遣妥、其他寫法
print('圓周率:{:.2f}'.format(3.141592654))
- 約束寬度
print('整數(shù):{:0>4d}'.format(25))
print('整數(shù):{:+>4d}'.format(26))
print('整數(shù):{:-<4d}'.format(27))
- 數(shù)字分隔
print('大整數(shù):{:,}'.format(10000000000))
- 百分比
print('百分比:{:.1%}'.format(0.2))
五擅编、字符串的相關(guān)操作
1、字符串.capitalize() - 將字符串的首字母變成大寫字母
2箫踩、center / ljust / rjust / zfill
字符串.center(寬度爱态,填充字符)
print('abc'.center(5,'*'))
字符串.ljust(寬度,填充字符)
print('abc'.ljust(5,'*'))
字符串.rjust(寬度境钟,填充字符)
print('abc'.rjust(5,'*'))
字符串.zfill(寬度) == 字符串.zfill(寬度,'0')
print('abc'.zfill(5))
3锦担、統(tǒng)計
1)、字符串1.count(字符串2)
2)吱韭、字符串1.count(字符串2,開始下標(biāo),結(jié)束下標(biāo)) - 統(tǒng)計開始到結(jié)束范圍內(nèi)字符串2出現(xiàn)的次數(shù)
str2 = 'how are you? i am fine! thank you!'
print(str2.count('you'))
print(str2.count('a'))
print(str2.count('you', 0, 15))
4、判斷str2是否以str1結(jié)尾
print(str2[-len(str1):] == str1)
5鱼的、字符串查找
獲取一個字符串在另一個字符串中第一次出現(xiàn)的位置
str2 = 'how are you? i am fine! thank you!'
print(str2.index('you'))
print(str2.find('you'))
當(dāng)字符串不存在的時候:index報錯理盆,find返回-1
6、join
字符串.join(序列) - 將序列中的元素用字符串連接在一起凑阶,產(chǎn)生新的字符串
str3 = '+'.join('abc')
print(str3)
str4 = ''.join('234cc')
print(str4)
str5 = ''.join({'a': 1, 'b': 2})
print(str5)
7猿规、字符串替換
字符串1.replace(字符串2,字符串3)------將字符串1中所有的字符串2都替換成字符串3
str2 = 'how are you? i am fine! thank you!'
str2.replace('you', 'me')
字符串1.maketrans(字符串2宙橱,字符串3)------創(chuàng)建字符串2和字符串3—一對應(yīng)的映射表
字符串1.translate(替換映射表) ------將字符串1中所有的字符串2都替換成字符串3
table = str.maketrans('a','b')
new_str2 = str2.translate(table)
print(new_str2)
8姨俩、切割
字符串1.split(字符串2)------將字符串1中所有的字符串2作為切割點切成多分,切割點會被去掉并返回一個列表
str2 = 'how are you? i am fine! thank you!'
print(str2.split(' '))