一.字符串
單雙引號泉蝌,字符串是有序的,但是是不可變的
python中只有這個(gè)概念沒有對應(yīng)的數(shù)據(jù)的類型玄妈,引號里面只有一個(gè)元素的字符串可以看成一個(gè)字符凰荚。
1.普通的字符:
原則上可以通過鍵盤輸入或則從其他地方復(fù)制粘貼的都可以作為字符。
普通字符:在字符串中能過代表符號本身的字符叽讳。(沒有特殊意義和特殊功能的字符)追他。
2.轉(zhuǎn)義字符:
在字符串中有特殊意義和功能的符號的組合,一般是以\開頭的
\n -----換行
\ ------ 表示 引號 本身
\t ----- 表示一個(gè)縮進(jìn)岛蚤,就是一個(gè)tab鍵
\ ------表示一個(gè)反斜桿邑狸,特殊的意義消失
\u四位的16進(jìn)制數(shù)--字符--獲取編碼值對應(yīng)的字符(編碼)--獲取四位十六進(jìn)制數(shù)作為編碼值對應(yīng)的字符。
str6="abc"
abc='st'r'
注意所有的轉(zhuǎn)義字符的長度都是一涤妒。
print("\uaa72")
3阻止轉(zhuǎn)義:
在字符串的最前面加r/R,可以讓當(dāng)前的所有的轉(zhuǎn)義的字符都是失效的单雾,所有的符號都是表示他本身
str=r'\tabc\n\'123'
str2='\tabc\n\'123'
print(str2)
'123
\tabc\n\'123
4字符的編碼:
計(jì)算不能直接存儲字符(符號),只能存儲數(shù)字她紫,為了能夠存儲字符硅堆。
把每一個(gè)字符關(guān)聯(lián)了一個(gè)固定的數(shù)字(這個(gè)固定的數(shù)字就是數(shù)字的編碼)
"a"----存編碼值97
字符和數(shù)字一一對應(yīng)的關(guān)系的表:ASCII碼表,Unicode編碼表(python)
Unicode編碼表是ASCII碼表擴(kuò)展贿讹。
(1)ASCII碼表--在計(jì)算中采用一個(gè)字節(jié)保存一個(gè)字符渐逃,字符包含了所有的字母,數(shù)字和美國常用的符號(128個(gè)字符)民褂。
數(shù)字48開始到57茄菊,0--9 大寫字母的編碼值小于小寫的, 大寫---65到90赊堪,小寫-97--122,范圍0-127
(2)Unicode編碼表---萬國碼
Unicode編碼表:包含了世界上所有的國家所有的語言對應(yīng)的符號面殖。總共有65356個(gè)符號哭廉。
中文的編碼的范圍畜普,4e00 --9fa5
編碼字符:\u4位16進(jìn)制的數(shù)
chr(編碼值)----獲取編碼值對應(yīng)的字符。
ord(字符)---獲取指定字符對應(yīng)的編碼值,返回的是十進(jìn)制的群叶。
:字符串在比較大小的時(shí)候比較的是編碼值得大小吃挑,第一個(gè)大了那就是這個(gè)大不會再比較后面的。
注意:在python 中不同的進(jìn)制之間也是可以比較大小的街立。
二舶衬。字符串的操作。
1.獲取元素赎离。
(1)獲取單個(gè)元素
切片逛犹,遍歷,字符串[下標(biāo)]
一個(gè)空格是一個(gè)字符,按tab鍵是四個(gè)字符虽画。
轉(zhuǎn)義字符舞蔽,\t對應(yīng)一個(gè)字符
(2)切片:字符串[開始下標(biāo):結(jié)束下標(biāo):步長]
(3)直接遍歷,通過下標(biāo)遍歷
(4)簡潔的方法:
str="hello ,python"
for i in str:
print("i",i)
for index,item in enumerate(str):#這個(gè)方法可以獲得元素和下標(biāo)码撰。
print(index,item)
(5)相關(guān)的操作:
1運(yùn)算符:
加法---把兩個(gè)字符串合并在一起產(chǎn)生一個(gè)新的字符串渗柿。原字符串不變,因?yàn)樽址豢勺儭?br>
乘法---重復(fù)出現(xiàn)N次
比較大胁钡骸:字符串1朵栖,字符串2
print("abcdf">"bc")
字符串比較大小比較的是字符串的編碼值的大小。
print("Z">"a")
應(yīng)用:
判斷字母是否是小寫字母:
"a"<=chr<="z"
判斷字符是否是大寫字母:
"A"<=chr<="Z"
判斷是否是字母:
"A"<=char<"Z" or "a"<=chr()<="z"
判斷字符是否是數(shù)字:"0"<=chr<="9"
練習(xí)柴梆,輸入一個(gè)字符串陨溅,判斷這個(gè)字符串是否是中文的字符串
str3=input("請輸入字符串:")
for i in str3:
if 0x4e00<= ord(i) <= 0x9fa5:
print(i)
else:
print("輸入錯誤")
a=hex(32)
b=oct(16)
print(hex(32)>oct(16))
str3 = input("請輸入字符串:")
for i in str3:
if chr(0x4e00)<= i <= chr(0x9fa5):
print(i)
else:
print("輸入錯誤")
value = input("請輸入:")
for i in value:
if not "\u4e00 " <= i <= "9fa5" :
print("不是中文")
break
else:
print("中文")
(6)in not in 操作:
字符串1 in 字符串2 ---判斷字符串2中是否包含字符串1
str2 = "abc123"
str4 = "abc"
print(str4 in str2),結(jié)果是True,
(7)相關(guān)的函數(shù):len,str,sorted,reversed.
len(字符串)----判斷字符串的長度,轉(zhuǎn)義字符的長度是1.空格的長度要注意绍在。
print("")---這個(gè)長度是0门扇,print(" ")---這個(gè)是1
b.str(數(shù)據(jù))---所有的數(shù)據(jù)都能轉(zhuǎn)字符串。直接將原數(shù)據(jù)的打印值加引號偿渡。
c.sorted(字符串)----產(chǎn)生一個(gè)新的列表臼寄。按字符編碼值排序的。(小--到)
srt="123adfsdfaSDFASDFASD"
print(sorted(str))
三.格式化字符串
字符--長度為1的字符串
格式字符串:
1.格式占位符:
a.語法:包含格式占位符的字符串 %(值1卸察,值2脯厨,)
b.說明:
格式占位符:%s(字符串),%d(數(shù)字整型),%f(小數(shù))
格式占位符使用的時(shí)候需根據(jù)類型來對應(yīng)使用。
其實(shí)所有的數(shù)據(jù)都可以用%s來占位坑质。
%-Nd--整數(shù)---可以來約束數(shù)字最后的長度合武,如果不夠后面補(bǔ)空格。+,-數(shù)字N涡扼,稼跳,+在前面補(bǔ)空格,—后面補(bǔ)空格吃沪。
% .Nf-----N是約束小數(shù)點(diǎn)后的位數(shù)汤善。
%f------這個(gè)一般不用,默認(rèn)是保留六位小數(shù)票彪。
本身是多少位就是多少红淡,就用%s
%--固定寫法 ()--固定寫法,如果值是一個(gè)直接省略降铸。 值--除了任何有結(jié)果的表達(dá)式在旱,值得個(gè)數(shù)和類型和前面的占位符的個(gè)數(shù)以及類型保持一致。
%c----字符占位推掸⊥靶可以把字符轉(zhuǎn)為相應(yīng)的數(shù)字
name = "xiaoma"
age = 18
money=234.5686868
print("我叫%s,我%6d歲驻仅,我有%.3f" % (name, age,money))
print("我叫%s,我%6d歲,我有%s" % (name, age,money))
.format
用法一:"...{ }".format(放進(jìn)去)--幾個(gè)大括號就放幾個(gè)值登渣。
print("我叫{},今年{}歲".format("馬羽","18"))
用法二:{N} 從0開始依次增加噪服,分別表示format中第0值第一個(gè)值,胜茧,粘优,,
print("我是{0},今年{1}歲竹揍,我是{2}人").format("馬羽","18","湖南")
用法三:[key]
"{key1},{key2}".format(key1=值1敬飒,key2=值2)
print("我是{name},年紀(jì){age}".format(name="mau",age=18))
用法四:用列表的占位符賦值:
list=[10,20,34,56]
print("{0[0]},{0[1]},{0[2]}".format(list))
用法五:
student={"name":"小明","age":20}
print("{name}今年{age}歲".format(student))#解包
其他的寫法:
print("圓周率:{:.2f}".format(3.1415926))
print("整數(shù):{:0>4d}邪铲。".format(25))#大于前面加芬位,下雨后面加 4個(gè)0
print("整數(shù):{:+>4d}。".format(25))#大于前面加带到,下雨后面加 4個(gè)0
print("{:2%}".format(0.255))
四.字符串的相關(guān)的方法
1字符串.capitalize()--將字符串的首字母變成大寫的字母昧碉。
大寫字母和小寫字母的差值是32
char="a"
print(chr(ord(char)-32))
2 字符串.center(寬度,填充字符)---原字符串在中間
字符串.ljust(寬度揽惹,填充字符)---原字符串在左邊
字符串.rjust(寬度被饿,填充字符)---原字符串在右邊
字符串.zfill(寬度,填充字符)---用0 填充
str2="abc"
print(str2.center(7,"+"))
print(str2.ljust(7,"+"))
print(str2.rjust(7,"+"))
print(str2.zfill(7))
3字符串1.count(字符串2)---統(tǒng)計(jì)字符串1中字符串2出現(xiàn)的次數(shù)搪搏。
str1="what are you doing"
print(str1.count("a"))
4字符串1.count(字符串2狭握,開始下標(biāo),結(jié)束下標(biāo))--在字符串1中統(tǒng)計(jì)字符串2從開始到結(jié)束出現(xiàn)的次數(shù)結(jié)尾取不到疯溺。
str1="what are you doing"
print(str1.count("a",0,3))
str3="abc"
str5="hao are you"#判斷str3是否是str5的結(jié)尾
print(str5[-len(str3):]==str3)
5字符串1.index(查找的字符2)论颅,不存在會報(bào)錯。
6字符串.find(需要查找的字符)囱嫩,不存在是-1
7字符串1.find(字符串2)--獲取字符串2第一次在1出現(xiàn)的位置
8 字符串.join(序列)--將序列中的用字符串連在一起恃疯,序列中的元素必須是字符串。
字典使用這個(gè)方法拼接的是鍵墨闲。
print("+++++".join("abc"))#---前面決定用什么連接
print("+++++".join(["abc""cds"]))#---前面決定用什么連接
9. 字符串.maketrans(),字符串.translate()---字符串替換今妄, 字符串1.replace(字符串2,字符串3)--將字符串1中所有的字符串2都替換成3
str1="what are you doing"
str0=str1.replace("you","me")
print(str0)
字符串1.translate(替換的映射表)
字符串2.maketrans(字符串3)--創(chuàng)建字符串2和字符串3對應(yīng)的映射表
table=str.maketrans("a","的")#將字符串str1中的所有的a 替換成 的
new=str1.translate(table)
print(new)
10切割字符串
"""
字符串.split(字符串2)--將字符串1中的所有的字符串2作為切割點(diǎn)切成多份
"""
qie=str1.split("a")#--切割點(diǎn)不存在了
print(qie)
方法: