1.操作字符串
1)查(獲取字符串中的字符)
- 獲取單個字符:字符串[下標(biāo)]
- 字符串切片:字符串[開始下標(biāo):結(jié)束下標(biāo):步長]
- 遍歷字符串:直接遍歷字符串/通過遍歷下標(biāo)遍歷字符串
a.獲取單個字符
print('==========獲取單個字符==========')
str1 = 'hello,python!'
print(str1[4], str1[-4])
str2 = 'abc\n123\u4e00你好'
print(str2[7]) # 一
# 補(bǔ)充:r語法 - 在字符串的最前面加r/R遮斥,會讓字符串中所有的轉(zhuǎn)義字符的功能消失 (一般在正則表達(dá)式中使用)
str3 = r'\tabc\n123\u4e00你好'
print(str3)
print(str3[7]) # 1
b.字符串切片
str1 = 'hello,python!'
print(str1[1:7:2]) # el,
print(str1[-1:7]) #
print(str1[-2:2:-1]) # nohtyp,ol
print(str1[:5:2]) # hlo
print(str1[2::-1]) # leh
print(str1[-5::2]) # to!
2)字符串相關(guān)操作
a.數(shù)學(xué)運(yùn)算符:+示惊,*
字符串1 + 字符串2 - 將字符串1和字符串2拼接在一起產(chǎn)生一個新的字符串
str1 = 'hello'
str2 = 'abc'
print(str1 + ',' + str2)
字符串 * N 或者 N * 字符串 - 字符串重復(fù)N次產(chǎn)生一個新的字符串
print(str1 * 3)
b.比較運(yùn)算符:<,>,<=,>=,==,!=
1.字符串比較大姓┢埂:從前往后比較兩個字符串中相同位置上的字符的大小蜘犁,誰的字符的編碼值大對應(yīng)的字符串就大
2.應(yīng)用
判斷字符是否是大寫字母:'A' <= char <= 'Z'
判斷字符是否是小寫字母:'a' <= char <= 'z'
判斷字符是否是字母:('A' <= char <= 'Z') or ('a' <= char <= 'z')
判斷字符是否是中文字符:'\u4e00' <= char <= '\u9fa5'
判斷字符是否是數(shù)字字符:'0' <= char <= '9'
print('acsasa' > 'cd') # False
print('abcs' > 'abca') # True
# 練習(xí)1:統(tǒng)計(jì)輸入的字符串中數(shù)字字符的個數(shù)
# 練習(xí)2:將輸入的字符串中所有的小寫字母取出來
num = 0
str4 = input('請輸入用戶名:')
str5 = ''
for chars in str4:
if '0' <= chars <= '9':
num += 1
if 'a' <= chars <= 'z':
str5 += chars
print('數(shù)字字符的個數(shù):', num)
print(str5)
c.in 和 not in
字符串1 in 字符串2 - 判斷字符串2中是否包含字符串1(判斷字符串1是否是字符串2的子串)
str1 = 'abc'
str2 = 'abcaqk1'
print(str1 in str2) # True
print(str1 in 'a1sba1c') # False
d.相關(guān)函數(shù):len, max, min, sorted, str
str(數(shù)據(jù)) - 將指定數(shù)據(jù)轉(zhuǎn)換成字符串赡勘;(所有類型的數(shù)據(jù)都可以轉(zhuǎn)換成字符串,轉(zhuǎn)換的時候是直接在數(shù)據(jù)本身外加引號)
字符串轉(zhuǎn)整型:字符串去掉引號后本身就是一個整數(shù)竹习,才能轉(zhuǎn)換成整型
字符串轉(zhuǎn)浮點(diǎn)型:字符串去掉引號后本身就是一個數(shù)字指孤,才能轉(zhuǎn)換成浮點(diǎn)型
print(float('3e4'))
print(int('39'))
2.格式字符串
1)什么是格式字符串
字符串中使用格式占位符來代替字符串中變化的部分,這種字符串就是格式字符串
1.語法
帶有格式占位符的字符串 % (值1猴抹,值2带族,值3,...)
2.說明
% - 固定寫法
() - 固定寫法蟀给,當(dāng)格式占位符只有一個的時候可以省略
值 - 值要和前面的格式占位符一一對應(yīng)(個數(shù)和類型)
3.格式占位符(不是python特有的)
%s - 字符串
%d - 整型
%.Nf - 浮點(diǎn)型蝙砌,N表示小數(shù)點(diǎn)后面的位數(shù)
%c - 字符(可以將字符編碼轉(zhuǎn)換成字符拼接到字符串中)
name = '小明'
age = 3
gender = '男'
weight = 55
pay = 100000
message = '%s今年%d歲,性別%s跋理,體重:%.2fkg择克,薪資:%.2f元' % (name, age, gender, weight, pay)
print(message)
2)格式字符串
帶有{}的格式字符串.format(值1,值2前普,值3肚邢,...)
message = '{},今年{}歲'.format('小明', 10)
print(message)
message = '{0},{1},{1}{0}'.format('小明', 10)
print(message) # 小明,10,10小明
message = '{name},{age}'.format(name='小白', age=18)
print(message)
message = '{1[1]},{0},{0[0]}'.format([0, 1], 'abc')
print(message)
數(shù)字格式
# 注意:格式字符串中約束小數(shù)位數(shù)的時候采用的是四舍五入
# {:.Nf} - 讓數(shù)字保留N位小數(shù)
message = '圓周率:{0:.2f},周長:{0:.1f}*{1}**2'.format(3.1415926, 10) # 四舍五入
print(message)
3.字符串相關(guān)方法
1)小寫字母和大小字母之間的相互轉(zhuǎn)換
char = 'a'
# 小寫字母轉(zhuǎn)大寫:編碼值減去32
new_char = chr(ord(char) - 32)
print(new_char)
2)字符串對齊
字符串.center(長度拭卿,字符) - 產(chǎn)生一個指定長度的字符串道偷,原字符串居中,剩下的部分用指定的字符填充
字符串.ljust(長度记劈,字符) - 產(chǎn)生一個指定長度的字符串勺鸦,原字符串居左,剩下的部分用指定的字符填充
字符串.rjust(長度目木,字符) - 產(chǎn)生一個指定長度的字符串换途,原字符串居右,剩下的部分用指定的字符填充
字符串.zfill(長度) - 產(chǎn)生一個指定長度的字符串刽射,原字符串居右军拟,剩下的部分用字符0填充
str1 = 'abc'
new_str1 = str1.center(9, ' ')
print(new_str1)
new_str2 = str1.ljust(5, ' ')
print(new_str2)
new_str3 = str1.rjust(8, ' ')
print(new_str3)
練習(xí):產(chǎn)生學(xué)號
num = 4
new_str4 = 'py1905' + str(num).zfill(5)
print(new_str4)
3)查找
字符串1.find(字符串2) - 獲取字符串2第一次在字符串1出現(xiàn)的位置,如果有返回下標(biāo)(返回正的下標(biāo))誓禁,沒有返回-1
字符串1.index(字符串2) - 獲取字符串2第一次在字符串1出現(xiàn)的位置懈息,如果有返回下標(biāo)(返回正的下標(biāo)),沒有就報(bào)錯
字符串1.find(字符串2摹恰,開始下標(biāo)辫继,結(jié)束下標(biāo)) - 在開始下標(biāo)到結(jié)束下標(biāo)前對應(yīng)的返回內(nèi)查找字符串2
字符串1.index(字符串2,開始下標(biāo)俗慈,結(jié)束下標(biāo)) -
str1 = 'how are you'
print(str1.find('are'))
print(str1.find('1')) # -1
# print(str1.index('1')) # ValueError: substring not found
4)join(***)
字符串1.join(序列) - 將序列中的元素用字符串1連接在一起產(chǎn)生一個新的字符串(序列中的元素必須都是字符串)
names = ['小黑', '小華', '小花']
new_str5 = ''.join(names)
print(new_str5)
5)替換
字符串1.replace(old, new) - 將字符串1中所有的old都替換成new姑宽,然后產(chǎn)生一個新的字符串
str2 = 'how are you? I am fine, thank you!'
new_str2 = str2.replace('are', 'is')
print(str2)
print(new_str2)
創(chuàng)建映射表(map)
str.maketrans(字符串1,字符串2) - 創(chuàng)建字符串1和字符串2字符一一對應(yīng)的映射表闺阱,字符串1是需要被替換的字符炮车,字符串2是目的字符(新字符)
字符串1.translate(映射表) - 按照映射表將字符串中的字符進(jìn)行替換,產(chǎn)生一個新的字符串
str2 = 'how are you? I am fine, thank you!'
map1 = str2.maketrans('are', '123')
print(map1)
str2 = 'how are you? I am fine, thank you!'
new_str2 = str2.translate(map1)
print(new_str2)
6)字符串切割
字符串.split(字符串2) - 將字符串1中的字符串2作為切點(diǎn),切割字符串1
lists = 'how are you? I am fine, thank you!'.split(' ')
print(lists)