day4 字符串常用的方法

字符串

1.什么是字符串

序列:有序,不可變的。
用單引號(hào)或者雙引號(hào)括起來(lái)的任意字符(集)。

2.字符串中的字符

a.普通字符:'abcABC','123', '+-*/ @#',' 中文'等等。
b.轉(zhuǎn)義字符:\n, \t 等等
c.阻止轉(zhuǎn)義:在字符串前面加r或者R



字符編碼

python中的字符采用的是Unicode編碼

a.什么是編碼:

數(shù)字和字符的一一對(duì)應(yīng)關(guān)系,其中字符對(duì)應(yīng)的數(shù)字就是字符的編碼
a -- 97
b -- 98

b.編碼方式

ASCII碼表:針對(duì)數(shù)字字符、字母字符、一些英文中常用的符號(hào)進(jìn)行編碼
采用一個(gè)字節(jié)對(duì)字符進(jìn)行編碼(只有128個(gè)字符)
Unicode碼:Unicode碼包含了ASCII碼表,同時(shí)能夠?qū)κ澜缟纤姓Z(yǔ)言對(duì)應(yīng)的符號(hào)進(jìn)行編碼
采用兩個(gè)字節(jié)進(jìn)行編碼(能夠?qū)?5536個(gè)字符進(jìn)行編碼)

c.兩個(gè)函數(shù)

chr(編碼值) -- 將字符編碼轉(zhuǎn)換成字符
ord(字符) -- 獲取字符對(duì)應(yīng)的編碼值

print(chr(0x4E01))
d.可以將字符編碼放到字符串中表示一個(gè)字符:\u + 4位的16進(jìn)制編碼值
print('123\uc412')


獲取字符串中的編碼

一旦一個(gè)字符串確定,那么字符串中的每一個(gè)字符的位置就是確定的。而且每個(gè)字符會(huì)對(duì)應(yīng)一個(gè)用來(lái)表示其位置和順序的下標(biāo)值

1.下標(biāo)(索引)

字符串中的每一個(gè)字符都有一個(gè)下標(biāo),代表其在字符串中的位置
下標(biāo)的范圍是:0 ~ 字符串長(zhǎng)度-1 (0代表第一個(gè)字符的位置)
-1 ~ -字符長(zhǎng)度 (-1代表字符串中最后一個(gè)字符的位置)

'abc' # 下標(biāo) a:0或-3 b:1或-2 c:2或-1

2.獲取單個(gè)字符

語(yǔ)法:字符串[下標(biāo)] -- 獲取字符串中,指定下標(biāo)對(duì)應(yīng)的字符

說(shuō)明:字符串 -- 可以是字符串常量,也可以是字符串變量(只要結(jié)果是字符串就行)
[] -- 固定寫(xiě)法
下標(biāo) -- 字符的下標(biāo),不能越界

str1 = 'hello python'
print(str1[6], str1[-6])
print(str1[-2])
3.獲取部分字符

方法一
a.語(yǔ)法:字符串[開(kāi)始下標(biāo):結(jié)束下標(biāo):步長(zhǎng)]
b.說(shuō)明:字符串 -- 可以是字符串常量,也可以是字符串變量(只要結(jié)果是字符串就行)
[] -- 固定寫(xiě)法
: -- 固定寫(xiě)法
開(kāi)始下標(biāo)、結(jié)束下標(biāo) -- 下標(biāo)值
步長(zhǎng) -- 整數(shù)

c.功能
從開(kāi)始下標(biāo)開(kāi)始獲取到結(jié)束下標(biāo)前為止,每次下標(biāo)值增加步長(zhǎng)對(duì)應(yīng)的值,結(jié)果是字符串

d.注意:
當(dāng)步長(zhǎng)是正數(shù)(從前往后取),開(kāi)始下標(biāo)對(duì)應(yīng)的字符要在結(jié)束下標(biāo)對(duì)應(yīng)的字符的前面
當(dāng)步長(zhǎng)是負(fù)數(shù)(從后往前取),開(kāi)始下標(biāo)對(duì)應(yīng)的字符要在結(jié)束下標(biāo)對(duì)應(yīng)的字符的后面
結(jié)束下標(biāo)對(duì)應(yīng)的值取不到的

str1 = '123456790'
print(str1[0:6:1])

方法二
語(yǔ)法:字符串[開(kāi)始下標(biāo):結(jié)束下標(biāo)](相當(dāng)于步長(zhǎng)是1)

4.獲取部分字符,省略下標(biāo)

獲取部分字符的時(shí)候開(kāi)始下標(biāo)和結(jié)束下標(biāo)都可以省略
a.開(kāi)始下標(biāo)省略
字符串[:結(jié)束下標(biāo):步長(zhǎng)]或者 字符串[:結(jié)束下標(biāo)]
注意:步長(zhǎng)為正數(shù) -- 從字符串開(kāi)頭(下標(biāo)0)開(kāi)始往后獲取
步長(zhǎng)為負(fù)數(shù) -- 從字符串結(jié)尾(下標(biāo)-1)開(kāi)始往前獲取

str1 = 'abc123abc'
print(str1[:4:1])
print(str1[:4:-1])

b.結(jié)束下標(biāo)省略
字符串[開(kāi)始下標(biāo)::步長(zhǎng)] 或者 字符串[開(kāi)始下標(biāo):]
注意:步長(zhǎng)是正數(shù) -- 從開(kāi)始下標(biāo)從前往后獲取到字符串結(jié)束
步長(zhǎng)是負(fù)數(shù) -- 從開(kāi)始下標(biāo)從前往后獲取到字符串開(kāi)始

print(str1[4:])
print(str1[4::-1])

print(str1[:])
print(str1[::-1])   #  字符串倒序


字符串的相關(guān)運(yùn)算

1.+

字符串1 + 字符串2 -- 將兩個(gè)字符串拼接在一起產(chǎn)生一個(gè)新的字符串(不會(huì)修改原來(lái)的字符串)

注意:字符串相加,加號(hào)兩邊必須都是字符串

str1 = 'abc'
str2 = '123'
print(str1 + str2)
2.*

字符串 * n(正整數(shù)) -- 字符串的類(lèi)容重復(fù)n次,產(chǎn)生一個(gè)新的字符串

str1 = 'abc'
print(str1 * 3)
print('*'*10)
3.比較運(yùn)算符:>, <, ==, !=, >=, <=

a.==,!=
字符串1 == 字符串2 -- 判斷兩個(gè)字符串是否相等

print('abc' == 'abc')
print('abc' != 'abc')
print('abc' == 'cba')

b.>, <, >=, <=
兩個(gè)字符串比較大小 -- 從第一個(gè)開(kāi)始,找到第一對(duì)不同的字符,然后比較他們編碼值得大小

print('abc' > 'ad')
print('abcde' > 'abcdE')
# 練習(xí):判斷一個(gè)字符是否是字母
char = input('請(qǐng)輸入一個(gè)字符')
print('是否是字母', 'a' <=  char <= 'z' or 'A' <= char <= 'Z')
# 練習(xí):判斷一個(gè)字符是否是中文
print('判斷是否是中文', 0x4e00 <= ord(char) <= 0x9fa5)
print('判斷是否是中文', '\u4e00' <= char <= '\u9fa5')

"""

4.in 和 not in

字符串1 in 字符串2 -- 判斷字符串2中是否包含字符串1,結(jié)果是布爾
字符串1 not in 字符串2 -- 判斷字符串2中是否不包含字符串1,結(jié)果是布爾

print('abc' in 'abc123')   # True
print('abc' in 'ab123c')   # False
print('acb' not in 'ab123c')   # True
5.len函數(shù)

len(序列)
len(字符串) -- 獲取字符串中字符的個(gè)數(shù)

print(len('abc123'))
6.str

str(數(shù)據(jù)) -- 將數(shù)據(jù)轉(zhuǎn)換成字符串

a.其他數(shù)據(jù)轉(zhuǎn)換成字符串:
所有類(lèi)型的數(shù)據(jù)都可以轉(zhuǎn)換成字符串,轉(zhuǎn)換的時(shí)候就是在數(shù)據(jù)的值的最外面加引號(hào)

補(bǔ)充:系統(tǒng)數(shù)據(jù)類(lèi)型名不能用來(lái)給變量命名

str1 = str(100)
print(str1, type(str1))

b.字符串轉(zhuǎn)其他類(lèi)型
字符串轉(zhuǎn)整數(shù):int(字符串),只有去掉引號(hào)后剩下的部分本身就是一個(gè)整數(shù)的字符串才能轉(zhuǎn)換成整型
字符串轉(zhuǎn)浮點(diǎn)型:float(字符串),去掉引號(hào)后剩下的部分本身就是一個(gè)整數(shù)或小數(shù)的字符串才能轉(zhuǎn)換成浮點(diǎn)型
字符串轉(zhuǎn)布爾:bool(字符串),除了空串會(huì)轉(zhuǎn)換成Flase,其他所有字符串都會(huì)轉(zhuǎn)換成True

print(int('123'))
print(float('12.89'), float('123'))
print(bool(''), bool('Flase'))


格式字符串

1.格式字符串

指的是字符串中通過(guò)格式占位符來(lái)表示字符串中變化的部分,后面再通過(guò)其他的值來(lái)給占位符賦值。
語(yǔ)法:
含有格式占位符的字符串 % (占位符對(duì)應(yīng)的值)

說(shuō)明:格式占位符 -- 有固定的寫(xiě)法;可以有多個(gè)
% -- 固定寫(xiě)法
() -- 里面的值的個(gè)數(shù)和值的類(lèi)型要與前面的格式占位符一一對(duì)應(yīng)

2.常見(jiàn)的格式占位符

%d -- 整數(shù)
%s -- 字符串
%f -- 小數(shù)(%.nf -- 保留小數(shù)點(diǎn)后n位小數(shù))
%c -- 字符(可以將數(shù)字轉(zhuǎn)換成字符)
"""

name = input('名字')
message = '%s你好,吃飯了么?' % (name)
print(message)

message = '%s,今年%d歲,體重:%.2fkg,血型是:%c' %(name, 18+2, 65, 97)
print(message)


"""

1.字符串.capitalize() -- 將字符串的第一個(gè)字符轉(zhuǎn)換成大寫(xiě)

"""

str1 = 'hello'
new_str1 =str1.capitalize()
print(new_str1)

"""

2.字符串對(duì)齊

字符串.center(width, fillchar) -- 居中
字符串.ljust(width, fillchar) -- 左對(duì)齊
字符串.rjust(width, fillchar) -- 右對(duì)齊

width -- 正整數(shù),表示新的字符串的寬度
fillchar -- 字符,填充字符串
"""

str1 = '123'
new_str1 = str1.center(7, '*')
print(new_str1)
import random   # 導(dǎo)入隨機(jī)數(shù)對(duì)應(yīng)的模塊

"""
random.randint(m, n) -- 產(chǎn)生一個(gè)m~n的隨機(jī)整數(shù)
"""

num = random.randint(0, 20)
print(num)
new_num = 'python1808' + str(num).rjust(3, '0')
print(new_num)

"""

3.join(seq)

字符串1.join(字符串2) -- 將字符串1的內(nèi)容插入到字符串2的每個(gè)字符之間
"""

str1 = '123'
str2 = '*'
print(str1.join(str2))

"""

4.max(字符串)--返回字符串 str 中最大的字母

min(字符串)--返回字符串 str 中最小的字母
"""

"""

5.字符串1.count(字符串2) -- 表示字符串2在字符串1中出現(xiàn)的次數(shù)

"""

str1 = '123123123'
str2 = '123'
print(str1.count(str2))
6.字符串1.endwith(字符串2) -- 檢查字符串1是否以字符串2結(jié)束,是結(jié)果就為T(mén)rue,反之為False
print(str1.endswith(str2))
7.字符串1.encode() -- 以指定的編碼方式編碼字符串
print(str1.encode())
8.字符串.expandtabs() -- 把字符串中的tab符號(hào)轉(zhuǎn)換為空格,tab符號(hào)默認(rèn)為8個(gè)空格
print(str1.expandtabs())
9.字符串1.find(字符串2) -- 檢測(cè)字符串1是否包含字符串2
print(str1.find(str2))
10.字符串.index(字符串2) -- 檢測(cè)字符串1是否包含字符串2,如果不在會(huì)報(bào)錯(cuò)
print(str1.index(str2))
11.字符串.isalnum() -- 如果字符串至少有一個(gè)字符并且所有字符都是字母或數(shù)字則返回True,否則返回False
str1 = '123'
str2 ='12asd'
print(str1.isalnum())
print(str2.isalnum())
12.字符串.isalpha() -- 如果字符串至少有一個(gè)字節(jié)并且所有字符都是字母則返回True,否則返回False
str1 ='abc'
print(str1.isalpha())
13.字符串.isdigit() -- 如果字符串只包含數(shù)字則返回 True 否則返回 False
str1 = '123'
str2 ='12asd'
print(str1.isdigit())
print(str2.isdigit())
14.字符串.islower() -- 如果字符串中包含至少一個(gè)區(qū)分大小寫(xiě)的字符,并且所有這些(區(qū)分大小寫(xiě)的)字符都是小寫(xiě),則返回 True,否則返回 False
str2 ='abc'
print(str2.islower())
15.字符串.isnumeric() -- 如果字符串中只包含數(shù)字字符,則返回 True,否則返回 False(中文數(shù)字也可以)
str1 = '100'
str2 = '百萬(wàn)'
print(str1.isnumeric(), str2.isnumeric())
16.字符串.isspace() -- 如果字符串中只包含空白,則返回 True,否則返回 False
str1 = ' '
str2 = '百 萬(wàn)'
print(str1.isspace(), str2.isspace())
17.字符串.istitle() -- 如果字符串是標(biāo)題化的(見(jiàn) title())則返回 True,否則返回 False
str1 = 'Home '
str2 = '百 萬(wàn)'
print(str1.istitle(), str2.istitle())
18.字符串.isupper() -- 如果字符串中包含至少一個(gè)區(qū)分大小寫(xiě)的字符,并且所有這些(區(qū)分大小寫(xiě)的)字符都是大寫(xiě),則返回 True,否則返回 False
str1 = 'Home '
str2 = 'ABC'
print(str1.isupper(), str2.isupper())
19.len(字符串) -- 返回字符串長(zhǎng)度
str1 = 'Home'
str2 = 'ABC'
print(len(str1), len(str2))
20.字符串.lower() -- 轉(zhuǎn)換字符串中所有大寫(xiě)字符為小寫(xiě).
str1 = 'Home'
str2 = 'ABC'
print(str1.lower(), str2.lower())
21.字符串.lstrip() -- 截掉字符串左邊的空格或指定字符
str1 = ' Home'
str2 = '1ABC'
print(str1.lstrip(), str2.lstrip('1A'))
22.z字符串.replace(old, new [, max])|把 將字符串中的 str1 替換成 str2,如果 max 指定,則替換不超過(guò) max 次
str1 = ' Home'
str2 = '1ABC'
print(str1.replace('H', 'h'), str2.replace('1A', '1'))
23.字符串1.rfind(字符串2) -- 檢測(cè)字符串1是否包含字符串2,不過(guò)是從右邊開(kāi)始查找.
str1 = ' 123456789'
str2 = '132'
print(str1.rfind(str2))
24.10.字符串.rindex(字符串2) -- 檢測(cè)字符串1是否包含字符串2,如果不在會(huì)報(bào)錯(cuò),不過(guò)是從右邊開(kāi)始.
str1 = ' 123456789'
str2 = '132'
print(str1.rindex(str2))
25..字符串.rstrip() -- 刪除字符串右邊的空格或指定字符
str1 = ' Home'
str2 = '1ABC'
print(str1.rstrip(), str2.rstrip('C'))
26.字符串.splitlines([keepends])--按照行('\r', '\r\n', \n')分隔,返回一個(gè)包含各行作為元素的列表,如果參數(shù) keepends 為 False,不包含換行符,如果為 True,則保留換行符。
str1 = ' Ho\nme'
str2 = '1A\rBC'
print(str1.rstrip([True]), str2.rstrip([False]))
27. 字符串1.startwith(字符串2) -- 檢查字符串1是否以字符串2開(kāi)始,是結(jié)果就為T(mén)rue,反之為False
str1 = '123123123'
str2 = '123'
print(str1.startswith(str2))
28.字符串.strip([chars]) -- 刪除字符串兩邊的空格
str1 = '123123123'
str2 = '123'
print(str1.strip(), str2.rstrip('1'))
29.(字符串).swapcase -- 將字符串中大寫(xiě)轉(zhuǎn)換為小寫(xiě),小寫(xiě)轉(zhuǎn)換為大寫(xiě)
str1 = ' Home'
str2 = '1ABC'
print(str1.swapcase(), str2.swapcase())
30.字符串.title() --返回"標(biāo)題化"的字符串,就是說(shuō)所有單詞都是以大寫(xiě)開(kāi)始,其余字母均為小寫(xiě)
str1 = 'home aBC'
str2 = 'ABC'
print(str1.title(), str2.title())
31.字符串.upper() -- 轉(zhuǎn)換字符串中的小寫(xiě)字母為大寫(xiě)
str1 = 'home aBC'
str2 = 'ABC'
print(str1.upper(), str2.upper())
32.字符串.zfill (width) -- 返回長(zhǎng)度為 width 的字符串,原字符串右對(duì)齊,前面填充0
str1 = 'home aBC'
str2 = 'ABC'
print(str1.zfill(1), str2.zfill(9))
33. 字符串.isdecimal() -- 檢查字符串是否只包含十進(jìn)制字符,如果是返回 true,否則返回 false。
str1 = 'home aBC'
str2 = '0x4567'
print(str1.isdecimal(), str2.isdecimal())
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容