字符串
1.什么是字符串
序列:有序乍桂,不可變的。
用單引號或者雙引號括起來的任意字符(集)允趟。
2.字符串中的字符
a.普通字符:'abcABC','123', '+-*/ @#'嘁字,' 中文'等等。
b.轉(zhuǎn)義字符:\n, \t 等等
c.阻止轉(zhuǎn)義:在字符串前面加r或者R
字符編碼
python中的字符采用的是Unicode
編碼
a.什么是編碼:
數(shù)字和字符的一一對應(yīng)關(guān)系盛垦,其中字符對應(yīng)的數(shù)字就是字符的編碼
a -- 97
b -- 98
b.編碼方式
ASCII碼表:針對數(shù)字字符、字母字符瓤漏、一些英文中常用的符號進(jìn)行編碼
采用一個字節(jié)對字符進(jìn)行編碼(只有128個
字符)
Unicode碼:Unicode碼包含
了ASCII碼表腾夯,同時能夠?qū)κ澜缟纤姓Z言對應(yīng)的符號進(jìn)行編碼
采用兩個字節(jié)進(jìn)行編碼(能夠?qū)?5536個字符進(jìn)行編碼)
c.兩個函數(shù)
chr(編碼值) -- 將字符編碼轉(zhuǎn)換成字符
ord(字符) -- 獲取字符對應(yīng)的編碼值
print(chr(0x4E01))
d.可以將字符編碼放到字符串中表示一個字符:\u + 4位的16進(jìn)制編碼值
print('123\uc412')
獲取字符串中的編碼
一旦一個字符串確定,那么字符串中的每一個字符的位置就是確定的蔬充。而且每個字符會對應(yīng)一個用來表示其位置和順序的下標(biāo)值
1.下標(biāo)(索引)
字符串中的每一個字符都有一個下標(biāo)蝶俱,代表其在字符串中的位置
下標(biāo)的范圍是:0 ~ 字符串長度-1 (0代表第一個字符的位置)
-1 ~ -字符長度 (-1代表字符串中最后一個字符的位置)
'abc' # 下標(biāo) a:0或-3 b:1或-2 c:2或-1
2.獲取單個字符
語法:字符串[下標(biāo)] -- 獲取字符串中,指定下標(biāo)對應(yīng)的字符
說明:字符串 -- 可以是字符串常量饥漫,也可以是字符串變量(只要結(jié)果是字符串就行)
[] -- 固定寫法
下標(biāo) -- 字符的下標(biāo)榨呆,不能越界
str1 = 'hello python'
print(str1[6], str1[-6])
print(str1[-2])
3.獲取部分字符
方法一
a.語法:字符串[開始下標(biāo):結(jié)束下標(biāo):步長]
b.說明:字符串 -- 可以是字符串常量,也可以是字符串變量(只要結(jié)果是字符串就行)
[] -- 固定寫法
: -- 固定寫法
開始下標(biāo)庸队、結(jié)束下標(biāo) -- 下標(biāo)值
步長 -- 整數(shù)
c.功能
從開始下標(biāo)開始獲取到結(jié)束下標(biāo)前為止积蜻,每次下標(biāo)值增加步長對應(yīng)的值,結(jié)果是字符串
d.注意:
當(dāng)步長是正數(shù)(從前往后瘸瓜)竿拆,開始下標(biāo)對應(yīng)的字符要在結(jié)束下標(biāo)對應(yīng)的字符的前面
當(dāng)步長是負(fù)數(shù)(從后往前取)宾尚,開始下標(biāo)對應(yīng)的字符要在結(jié)束下標(biāo)對應(yīng)的字符的后面
結(jié)束下標(biāo)對應(yīng)的值取不到的
str1 = '123456790'
print(str1[0:6:1])
方法二
語法:字符串[開始下標(biāo):結(jié)束下標(biāo)](相當(dāng)于步長是1)
4.獲取部分字符丙笋,省略下標(biāo)
獲取部分字符的時候開始下標(biāo)和結(jié)束下標(biāo)都可以省略
a.開始下標(biāo)省略
字符串[:結(jié)束下標(biāo):步長]或者 字符串[:結(jié)束下標(biāo)]
注意:步長為正數(shù) -- 從字符串開頭(下標(biāo)0)開始往后獲取
步長為負(fù)數(shù) -- 從字符串結(jié)尾(下標(biāo)-1)開始往前獲取
str1 = 'abc123abc'
print(str1[:4:1])
print(str1[:4:-1])
b.結(jié)束下標(biāo)省略
字符串[開始下標(biāo)::步長] 或者 字符串[開始下標(biāo):]
注意:步長是正數(shù) -- 從開始下標(biāo)從前往后獲取到字符串結(jié)束
步長是負(fù)數(shù) -- 從開始下標(biāo)從前往后獲取到字符串開始
print(str1[4:])
print(str1[4::-1])
print(str1[:])
print(str1[::-1]) # 字符串倒序
字符串的相關(guān)運算
1.+
字符串1 + 字符串2 -- 將兩個字符串拼接在一起產(chǎn)生一個新的字符串(不會修改原來的字符串)
注意:字符串相加,加號兩邊必須都是字符串
str1 = 'abc'
str2 = '123'
print(str1 + str2)
2.*
字符串 * n(正整數(shù)) -- 字符串的類容重復(fù)n次,產(chǎn)生一個新的字符串
str1 = 'abc'
print(str1 * 3)
print('*'*10)
3.比較運算符:>, <, ==, !=, >=, <=
a.==不见,!=
字符串1 == 字符串2 -- 判斷兩個字符串是否相等
print('abc' == 'abc')
print('abc' != 'abc')
print('abc' == 'cba')
b.>, <, >=, <=
兩個字符串比較大小 -- 從第一個開始澳化,找到第一對不同的字符,然后比較他們編碼值得大小
print('abc' > 'ad')
print('abcde' > 'abcdE')
# 練習(xí):判斷一個字符是否是字母
char = input('請輸入一個字符')
print('是否是字母', 'a' <= char <= 'z' or 'A' <= char <= 'Z')
# 練習(xí):判斷一個字符是否是中文
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(字符串) -- 獲取字符串中字符的個數(shù)
print(len('abc123'))
6.str
str(數(shù)據(jù)) -- 將數(shù)據(jù)轉(zhuǎn)換成字符串
a.其他數(shù)據(jù)轉(zhuǎn)換成字符串:
所有類型的數(shù)據(jù)都可以轉(zhuǎn)換成字符串,轉(zhuǎn)換的時候就是在數(shù)據(jù)的值的最外面加引號
補(bǔ)充:系統(tǒng)數(shù)據(jù)類型名不能用來給變量命名
str1 = str(100)
print(str1, type(str1))
b.字符串轉(zhuǎn)其他類型
字符串轉(zhuǎn)整數(shù):int(字符串),只有去掉引號后剩下的部分本身就是一個整數(shù)的字符串才能轉(zhuǎn)換成整型
字符串轉(zhuǎn)浮點型:float(字符串)灶似,去掉引號后剩下的部分本身就是一個整數(shù)或小數(shù)的字符串才能轉(zhuǎn)換成浮點型
字符串轉(zhuǎn)布爾:bool(字符串)列林,除了空串會轉(zhuǎn)換成Flase,其他所有字符串都會轉(zhuǎn)換成True
print(int('123'))
print(float('12.89'), float('123'))
print(bool(''), bool('Flase'))
格式字符串
1.格式字符串
指的是字符串中通過格式占位符來表示字符串中變化的部分酪惭,后面再通過其他的值來給占位符賦值希痴。
語法:
含有格式占位符的字符串 % (占位符對應(yīng)的值)
說明:格式占位符 -- 有固定的寫法;可以有多個
% -- 固定寫法
() -- 里面的值的個數(shù)和值的類型要與前面的格式占位符一一對應(yīng)
2.常見的格式占位符
%d -- 整數(shù)
%s -- 字符串
%f -- 小數(shù)(%.nf -- 保留小數(shù)點后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() -- 將字符串的第一個字符轉(zhuǎn)換成大寫
"""
str1 = 'hello'
new_str1 =str1.capitalize()
print(new_str1)
"""
2.字符串對齊
字符串.center(width, fillchar) -- 居中
字符串.ljust(width, fillchar) -- 左對齊
字符串.rjust(width, fillchar) -- 右對齊
width -- 正整數(shù)鲫懒,表示新的字符串的寬度
fillchar -- 字符嫩实,填充字符串
"""
str1 = '123'
new_str1 = str1.center(7, '*')
print(new_str1)
import random # 導(dǎo)入隨機(jī)數(shù)對應(yīng)的模塊
"""
random.randint(m, n) -- 產(chǎn)生一個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的每個字符之間
"""
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é)果就為True窥岩,反之為False
print(str1.endswith(str2))
7.字符串1.encode() -- 以指定的編碼方式編碼字符串
print(str1.encode())
8.字符串.expandtabs() -- 把字符串中的tab符號轉(zhuǎn)換為空格甲献,tab符號默認(rèn)為8個空格
print(str1.expandtabs())
9.字符串1.find(字符串2) -- 檢測字符串1是否包含字符串2
print(str1.find(str2))
10.字符串.index(字符串2) -- 檢測字符串1是否包含字符串2,如果不在會報錯
print(str1.index(str2))
11.字符串.isalnum() -- 如果字符串至少有一個字符并且所有字符都是字母或數(shù)字則返回True颂翼,否則返回False
str1 = '123'
str2 ='12asd'
print(str1.isalnum())
print(str2.isalnum())
12.字符串.isalpha() -- 如果字符串至少有一個字節(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() -- 如果字符串中包含至少一個區(qū)分大小寫的字符,并且所有這些(區(qū)分大小寫的)字符都是小寫朦乏,則返回 True球及,否則返回 False
str2 ='abc'
print(str2.islower())
15.字符串.isnumeric() -- 如果字符串中只包含數(shù)字字符,則返回 True呻疹,否則返回 False(中文數(shù)字也可以)
str1 = '100'
str2 = '百萬'
print(str1.isnumeric(), str2.isnumeric())
16.字符串.isspace() -- 如果字符串中只包含空白桶略,則返回 True,否則返回 False
str1 = ' '
str2 = '百 萬'
print(str1.isspace(), str2.isspace())
17.字符串.istitle() -- 如果字符串是標(biāo)題化的(見 title())則返回 True诲宇,否則返回 False
str1 = 'Home '
str2 = '百 萬'
print(str1.istitle(), str2.istitle())
18.字符串.isupper() -- 如果字符串中包含至少一個區(qū)分大小寫的字符,并且所有這些(區(qū)分大小寫的)字符都是大寫惶翻,則返回 True姑蓝,否則返回 False
str1 = 'Home '
str2 = 'ABC'
print(str1.isupper(), str2.isupper())
19.len(字符串) -- 返回字符串長度
str1 = 'Home'
str2 = 'ABC'
print(len(str1), len(str2))
20.字符串.lower() -- 轉(zhuǎn)換字符串中所有大寫字符為小寫.
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 指定,則替換不超過 max 次
str1 = ' Home'
str2 = '1ABC'
print(str1.replace('H', 'h'), str2.replace('1A', '1'))
23.字符串1.rfind(字符串2) -- 檢測字符串1是否包含字符串2,不過是從右邊開始查找.
str1 = ' 123456789'
str2 = '132'
print(str1.rfind(str2))
24.10.字符串.rindex(字符串2) -- 檢測字符串1是否包含字符串2吕粗,如果不在會報錯,不過是從右邊開始.
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')分隔纺荧,返回一個包含各行作為元素的列表,如果參數(shù) keepends 為 False,不包含換行符宙暇,如果為 True输枯,則保留換行符。
str1 = ' Ho\nme'
str2 = '1A\rBC'
print(str1.rstrip([True]), str2.rstrip([False]))
27. 字符串1.startwith(字符串2) -- 檢查字符串1是否以字符串2開始占贫,是結(jié)果就為True桃熄,反之為False
str1 = '123123123'
str2 = '123'
print(str1.startswith(str2))
28.字符串.strip([chars]) -- 刪除字符串兩邊的空格
str1 = '123123123'
str2 = '123'
print(str1.strip(), str2.rstrip('1'))
29.(字符串).swapcase -- 將字符串中大寫轉(zhuǎn)換為小寫,小寫轉(zhuǎn)換為大寫
str1 = ' Home'
str2 = '1ABC'
print(str1.swapcase(), str2.swapcase())
30.字符串.title() --返回"標(biāo)題化"的字符串,就是說所有單詞都是以大寫開始型奥,其余字母均為小寫
str1 = 'home aBC'
str2 = 'ABC'
print(str1.title(), str2.title())
31.字符串.upper() -- 轉(zhuǎn)換字符串中的小寫字母為大寫
str1 = 'home aBC'
str2 = 'ABC'
print(str1.upper(), str2.upper())
32.字符串.zfill (width) -- 返回長度為 width 的字符串瞳收,原字符串右對齊,前面填充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())