一.字符串
單雙引號,字符串是有序的,但是是不可變的
python中只有這個概念沒有對應(yīng)的數(shù)據(jù)的類型,引號里面只有一個元素的字符串可以看成一個字符。
1.普通的字符:
原則上可以通過鍵盤輸入或則從其他地方復(fù)制粘貼的都可以作為字符。
普通字符:在字符串中能過代表符號本身的字符。(沒有特殊意義和特殊功能的字符)。
2.轉(zhuǎn)義字符:
在字符串中有特殊意義和功能的符號的組合,一般是以\開頭的
\n -----換行
\ ------ 表示 引號 本身
\t ----- 表示一個縮進(jìn),就是一個tab鍵
\ ------表示一個反斜桿,特殊的意義消失
\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ù)字,為了能夠存儲字符。
把每一個字符關(guān)聯(lián)了一個固定的數(shù)字(這個固定的數(shù)字就是數(shù)字的編碼)
"a"----存編碼值97
字符和數(shù)字一一對應(yīng)的關(guān)系的表:ASCII碼表,Unicode編碼表(python)
Unicode編碼表是ASCII碼表擴(kuò)展。
(1)ASCII碼表--在計(jì)算中采用一個字節(jié)保存一個字符,字符包含了所有的字母,數(shù)字和美國常用的符號(128個字符)。
數(shù)字48開始到57,0--9 大寫字母的編碼值小于小寫的, 大寫---65到90,小寫-97--122,范圍0-127
(2)Unicode編碼表---萬國碼
Unicode編碼表:包含了世界上所有的國家所有的語言對應(yīng)的符號??偣灿?5356個符號。
中文的編碼的范圍,4e00 --9fa5
編碼字符:\u4位16進(jìn)制的數(shù)
chr(編碼值)----獲取編碼值對應(yīng)的字符。
ord(字符)---獲取指定字符對應(yīng)的編碼值,返回的是十進(jìn)制的。
:字符串在比較大小的時候比較的是編碼值得大小,第一個大了那就是這個大不會再比較后面的。
注意:在python 中不同的進(jìn)制之間也是可以比較大小的。
二。字符串的操作。
1.獲取元素。
(1)獲取單個元素
切片,遍歷,字符串[下標(biāo)]
一個空格是一個字符,按tab鍵是四個字符。
轉(zhuǎn)義字符,\t對應(yīng)一個字符
(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):#這個方法可以獲得元素和下標(biāo)。
print(index,item)
(5)相關(guān)的操作:
1運(yùn)算符:
加法---把兩個字符串合并在一起產(chǎn)生一個新的字符串。原字符串不變,因?yàn)樽址豢勺儭?br>
乘法---重復(fù)出現(xiàn)N次
比較大?。鹤址?,字符串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í),輸入一個字符串,判斷這個字符串是否是中文的字符串
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("")---這個長度是0,print(" ")---這個是1
b.str(數(shù)據(jù))---所有的數(shù)據(jù)都能轉(zhuǎn)字符串。直接將原數(shù)據(jù)的打印值加引號。
c.sorted(字符串)----產(chǎn)生一個新的列表。按字符編碼值排序的。(小--到)
srt="123adfsdfaSDFASDFASD"
print(sorted(str))
三.格式化字符串
字符--長度為1的字符串
格式字符串:
1.格式占位符:
a.語法:包含格式占位符的字符串 %(值1,值2,)
b.說明:
格式占位符:%s(字符串),%d(數(shù)字整型),%f(小數(shù))
格式占位符使用的時候需根據(jù)類型來對應(yīng)使用。
其實(shí)所有的數(shù)據(jù)都可以用%s來占位。
%-Nd--整數(shù)---可以來約束數(shù)字最后的長度,如果不夠后面補(bǔ)空格。+,-數(shù)字N,,+在前面補(bǔ)空格,—后面補(bǔ)空格。
% .Nf-----N是約束小數(shù)點(diǎn)后的位數(shù)。
%f------這個一般不用,默認(rèn)是保留六位小數(shù)。
本身是多少位就是多少,就用%s
%--固定寫法 ()--固定寫法,如果值是一個直接省略。 值--除了任何有結(jié)果的表達(dá)式,值得個數(shù)和類型和前面的占位符的個數(shù)以及類型保持一致。
%c----字符占位??梢园炎址D(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)去)--幾個大括號就放幾個值。
print("我叫{},今年{}歲".format("馬羽","18"))
用法二:{N} 從0開始依次增加,分別表示format中第0值第一個值,,,,
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個0
print("整數(shù):{:+>4d}。".format(25))#大于前面加,下雨后面加 4個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(序列)--將序列中的用字符串連在一起,序列中的元素必須是字符串。
字典使用這個方法拼接的是鍵。
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)
方法: