一、字符串的元素
1.元素
- 定義:
Python中,將字符串看出是一個序列(容器),容器中的內(nèi)容是字符,每一個字符就是元素
2.獲取字符
定義:
字符串是一個不可變的有序序列(不可變指的是字符串中的每個字符,以及每個字符的位置不可變),所以通過方法可以將想獲取的字符取出-
獲取單個字符
語法:字符串[下標(biāo)] -->根據(jù)下標(biāo)獲取字符串中的字符
說明:
a.字符串:可以是字符串的變量,也可以是字符串的值
b.[]:固定寫法
c.下標(biāo):0~字符串長度-1; -1~-長度例子:
str2 = 'python'
print(str2[0]) #獲取第1個字符
print(str2[-6]) #獲取倒數(shù)第6個字符
#p
#p
- 獲取字符串中的部分字符
| 方法 | 說明 | 注意 |
|---|---|---|
| 字符串[起始下標(biāo):結(jié)束下標(biāo)] | 獲取字符串中從起始下標(biāo)開始,到結(jié)束下標(biāo)前的所有的字符 | 起始下標(biāo)對應(yīng)的字符要在結(jié)束下標(biāo)之前 |
| 字符串[起始下標(biāo):結(jié)束下標(biāo):步長] | 獲取字符串中從起始下標(biāo)開始獲取,每步長獲取一個,到結(jié)束下標(biāo)前為止 | 步長為正(負(fù))從前(后)往后(前)取,起始下標(biāo)對應(yīng)的字符要在結(jié)束下標(biāo)之前, |
| 省略起始下標(biāo):字符串[:結(jié)束下標(biāo)] | 從頭開始取 | 開頭和步長的正負(fù)值有關(guān),切片的時(shí)候下標(biāo)可以越界 |
| 省略結(jié)束下標(biāo):字符串[起始下標(biāo):] | 從起始下標(biāo)開始取,取完為止 | 開頭和步長的正負(fù)值有關(guān),切片的時(shí)候下標(biāo)可以越界 |
| 省略兩個下標(biāo):字符串[:] | 全部取完 | 開頭和步長的正負(fù)值有關(guān),切片的時(shí)候下標(biāo)可以越界 |
- 測試:
str4 = '同九年,汝何秀!'
print(str4[1:5])
#九年,汝
str4 = '同九年,汝何秀!'
print(str4[1:5])
#九年,汝
str5 = '海賊王、一拳超人、一人之下、進(jìn)擊的巨人'
print(str5[1:10:2])
print(str5[10:0:-1])
#賊、拳人一
#人一、人超拳一、王賊
str6 = '閣下何不同風(fēng)起,扶搖直上九萬里'
print(str6[:4:1])
print(str6[-4::1])
print(str6[::-1])
#閣下何不
#上九萬里
#里萬九上直搖扶,起風(fēng)同不何下閣
二.字符串運(yùn)算符
1.分類
- python中的字符串支持+、*和比較運(yùn)算符
| 方法 | 格式 | 說明 |
|---|---|---|
| + | 字符串1 + 字符串2 | 將字符串1和字符串2拼接在一起產(chǎn)生一個新的字符串 |
| * | 字符串1 * n(整數(shù)) | 字符串1重復(fù)n次,產(chǎn)生一個新的字符串 |
| 比較運(yùn)算符 | 字符串1 (==,!=,>,<) 字符串2 | 判斷相等、比較大小(比較兩個字符串相應(yīng)位置的字符編碼的大小,直到字符不相等為止) |
- 例子:
str1 = '玉樹臨風(fēng)美少年'
str2 = '攬鏡自顧夜不眠'
print(str1 + str2)
print(str1 + " " + str2)
print(str1 + "," + str2)
#玉樹臨風(fēng)美少年攬鏡自顧夜不眠
#玉樹臨風(fēng)美少年 攬鏡自顧夜不眠
#玉樹臨風(fēng)美少年,攬鏡自顧夜不眠
str3 = '家有千金,行止由心!'
print(str3*3)
#家有千金,行止由心!家有千金,行止由心!家有千金,行止由心!
print('abc' == 'abc')
print('abc' != 'abc')
#True
#False
print('abc' > 'bc')
print('zabc' > 'bc')
#False
#True
2.in和not in
用法:
字符串1 in 字符串2 -->判斷字符串1是否在字符串2中(判斷字符串2是否包含字符串1)。例子:
print('ab' in 'abcd')
print('ab' in 'assbcd')
#True
#False
3.len()函數(shù)
定義:
python的內(nèi)置函數(shù),功能是用來獲取序列的長度(容器中元素的個數(shù)),字符串的長度就是字符串中字符的個數(shù)例子:
print(len('hello'))
str4 = '床前明月光\n疑是地上霜!'
print(len(str4))
str4 = r'床前明月光\n疑是地上霜!'
print(len(str4))
str4 = '你好嗎?\u4eff\u5cff'
print(len(str4))
print(str4[len(str4)-1]) #str5[5]
#5
#12
#13
#6
#峿
三、格式字符串
定義:字符串的內(nèi)部通過格式占位符來表示字符串中變化的部分,然后在后面用值來填充變化的部分
作用:按格式對字符串進(jìn)行拼接
語法:帶有占位符的字符串 %(給占位符賦值的值)
注意:前面有多少個占位符,后面()中就必須有多少值,并且值的個數(shù)和值的類型要和前面的占位符一一對應(yīng)
分類·:
| 符號 | 意義 |
|---|---|
| %s | 字符串 |
| %d | 整數(shù) |
| %f | 小數(shù) |
| %f.nf | 保留小數(shù)點(diǎn)后n位小數(shù) |
| %c | 顯示數(shù)字對應(yīng)的字符 |
- 例子:
name = '張三'
age = 18
money = 10.5
# message = '姓名:'+name+'年齡:'+str(age)+'薪資'+str(money)
message = '姓名: %s 年齡: %d 薪資: %f' %(name,age,money)
print(message)
#姓名: 張三 年齡: 18 薪資: 10.500000
四、字符串內(nèi)置函數(shù)
- python內(nèi)部給我們提供很多字符串相關(guān)的方法,使用方式:字符串.方法名(參數(shù))
| 函數(shù) | 變量內(nèi)容 | 用法 | 函數(shù)名稱 |
|---|---|---|---|
| capitalize() | 字符串 | 字符串.capitalize() | 將字符串的第一個字符轉(zhuǎn)換為大寫 |
| center(width,fillchar) | width字符串的長度,fillchar新的字符串的總共的長度剩下部分填充的字符 | 字符串.center(width,fillchar) | 字符串居中對齊 |
| ljust(width,fillchar) | width字符串的長度,fillchar新的字符串的總共的長度剩下部分填充的字符 | 字符串.ljust(width,fillchar) | 字符串左對齊 |
| rjust(width,fillchar) | width字符串的長度,fillchar新的字符串的總共的長度剩下部分填充的字符 | 字符串.rjust(width,fillchar) | 字符串右對齊 |
| count() | 字符串 | 字符串1.count(字符串2) | 顯示數(shù)字對應(yīng)的字符 |
| endswith() | 字符串 | 字符串1.endswith(字符串2) | 判斷字符串1是否以字符串2結(jié)尾 |
| startswith() | 字符串 | 字符串1.startswith(字符串2) | 判斷字符串1是否以字符串2開頭 |
| find | 字符串 | 字符串1.find(字符串2) | 在字符串1中查到字符串2,返回第一個的開始下標(biāo),沒有就返回-1 |
| isnumeric() | 無 | 字符串.isnumeric() | 判斷字符串是不是由數(shù)字組成 |
| istitle() | 無 | 字符串.istitle() | 判斷字符串是否為標(biāo)題 |
| join() | 字符串 | 字符串1.join(字符串2) | 將字符串1插入到字符串2中每個字符之間 |
- 例子:
str1 = 'love'
new_str1 = str1.capitalize()
print(new_str1)
#Love
str2 = 'dog'
new_str2 = str2.center(7,"0")
print(new_str2)
new_str2 = str2.ljust(7,"0")
print(new_str2)
new_str2 = str2.rjust(7,"0")
print(new_str2)
#00dog00
#dog0000
#0000dog
# 練習(xí):根據(jù)進(jìn)班的順序號產(chǎn)生對應(yīng)的學(xué)號,學(xué)號要求:
# 例如:num = 1 --->py18070001 num = 11 --->py18070011 num = 102 --->py18070102
num = '1'
new_num = 'py1807' + num.rjust(4,"0")
print(new_num)
#py18070001
print('abcdabcdaaa'.count('ab'))
print('hello world'.count('l'))
#2
#3
str1 = 'when i was'
print(str1.endswith('was'))
print(str1.endswith('when'))
#True
#False
str2 = 'when i was young,i have a dream'
print(str1.find('was'))
print(str1.find('waszz'))
#7
#-1
print('123'.isnumeric())
print('一二五'.isnumeric())
print('二百五'.isnumeric())
print('壹'.isnumeric())
#True
#True
#True
#True
print('The'.istitle())
#True
print('the'.join('she'))
#sthehthee
作業(yè)
- 個性化消息: 將用戶的姓名存到一個變量中,并向該用戶顯示一條消息。顯示的消息應(yīng)非常簡單,如“Hello Eric, would you like to learn some Python today?”。
解答:
name = 'faker'
print('"Hello ' + name + ', would you like to learn some Python today?"')
題一
- 調(diào)整名字的大小寫: 將一個人名存儲到一個變量中,再以小寫、大寫和首字母大寫的方式顯示這個人名。
解答:
name = "clearlove7"
print(name.title())
print(name.upper())
print(name.lower())
題二
- 名言: 找一句你欽佩的名人說的名言,將這個名人的姓名和他的名言打印出來。輸出應(yīng)類似于下面這樣(包括引號):Albert Einstein once said, “A person who never made a mistake never tried anything new.”
解答:
str1 = 'Albert Einstein once said, “A person who never made a mistake never tried anything new.”'
print(str1)
題三
- 名言2: 重復(fù)練習(xí)2-5,但將名人的姓名存儲在變量famous_person 中,再創(chuàng)建要顯示的消息,并將其存儲在變量message 中,然后打印這條消息。
解答:
famous_person = 'Albert Einstein'
message = famous_person + ' once said, “A person who never made a mistake never tried anything new.”'
print(message)
題四
- 剔除人名中的空白: 存儲一個人名,并在其開頭和末尾都包含一些空白字符。務(wù)必至少使用字符組合"\t" 和"\n" 各一次。 打印這個人名,以顯示其開頭和末尾的空白。然后,分別使用剔除函數(shù)lstrip() 、rstrip() 和strip() 對人名進(jìn)行處理,并將結(jié)果打印出來。
解答:
name = ' fa\tke\nr '
print(name)
name1 = name.rstrip() #剔除字符串末尾的空白,
print(name1)
name2 = name.lstrip() #剔除字符串開頭的空白
print(name2)
name3 = name.strip() #剔除字符串兩端的空白
print(name3)
題五