<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
字串:
在Python中字串是基本的資料型別,是一個不可變的字元序列
僅儲存一份相同且不可變字串的方法,不同的值被存放在字串的駐留池中,python的駐留機制對相同的字串只保留一份拷貝,後續建立相同字串時,不會開闢新空間,二十八該字串的地址賦給新建立的變數
a='Python' b="Python" c='''Python''' d="""Python""" #輸出變數且檢視變數地址,發現四個變數儲存的字串的地址都是一樣的,因為字串的駐留機制,字串定以後,再有其他變數定義這個字串,將不會開闢新的空間,而是繼續沿用這個字串的空間 print(a,id(a)) print(b,id(b)) print(c,id(c)) print(d,id(d))
駐留機制的幾種情況(在命令列互動模式中,而不是PyCharm):
sys中的intern方法強制2個字串指向同一個物件
PyCharm對字串進行了優化處理
例:
import sys #兩個不符合駐留機制的字串 a="abc%" b="abc%" print(a is b ) #False a=sys.intern(b) #強制讓a和b在同個位置存放駐留 print(a is b) #True
值new一次物件,效率要比"+"效率高
查詢方法:
index()
查詢子串substr第一次出現的位置,如果查詢的子串不存在時,則丟擲ValueErrorrindex()
查詢子串substr最後一次出現的位置,如果查詢子串不存在時,則丟擲ValueErrorfind()
查詢子串substr第一次出現的位置,如果查詢的子串不存在時,則丟擲-1rfind()
查詢子串substr最後一次出現的位置,如果查詢子串不存在時嗎,則返回-1建議使用find
或者rfind
查詢字串
s="hello,hello" print(s.index("lo")) #查詢lo在字串中第一次出現的位置,返回值是3 print(s.find("lo")) #查詢lo在字串中第一次出現的位置,返回值是3 print(s.rindex("lo")) #查詢lo在字串中最後一次出現的位置,返回值是3 print(s.rfind("lo")) #查詢lo在字串中最後一次出現的位置,返回值是3 # print(s.index("k")) #查詢的字元在字串中不存在,報錯,返回ValueError: substring not found print(s.rfind("k")) ##查詢的字元在字串中不存在,返回-1,不報錯
大小寫轉換:
upper()
把字串中所有的字元都轉換成大寫字元lower()
把字串中所有的字元都轉成小寫字母swapcase()
把字串中所有大寫字母轉成小寫字母,把所有小寫字元都轉成大寫字母capitalize()
把第一個字元轉換成大寫,把其餘字元轉換成小寫title()
把每個單詞的第一個字元轉換成大寫,把每個單詞的剩餘字元轉換為小寫使用函數轉換後,會產生新的字串物件,原字串不變,使用函數時需要賦值給新的變數,即使轉換後和原字串一樣,也一樣會產生新的物件
h="hello,python" h.upper() #將字串變為大寫,未賦值給其他變數,返回的時hello,python print(h) z=h.upper() #返回值HELLO,PYTHON print(z)
字串對齊:
居中對齊center()第一個引數指定長度,第二個引數指定填充物,預設填充物是空格,設定寬度小於原字串,則返回元字串
print(s.center(20,"*")) #返回值****hello,hello***** print(s.center(10)) #返回值hello,hello、
字串替換:
replace():第一個引數指定被替換的子串,第2個引數指定替換子串的字串,
該方法返回替換後得到的字串,替換前的字串不發生變化,呼叫該方法時可以通過第3個引數指定最大替換次數
字串的合併:
join():將列表或元組中的字串合併成一個字串
tihuan="hello,python" tihuan1=tihuan.replace("hello","Hi") print(tihuan) #返回值hello,python 使用該函數,之前的字串不會發生變化,所以需要賦值給新的變數,才會發生變化 print(tihuan1) #返回值 Hi,python tihuan2="hello,hello,hello,hello,python" tihuan3=tihuan2.replace("hello","Hi",2) #把hello替換成Hi,,只替換2個 print(tihuan3) #返回值Hi,Hi,hello,hello,python
運運算元:>,>=,<,<=,==,!=
比較規則:首先比較兩個字串中的第一個字元,如果相等則繼續比較下一個字元,
依次比較下去,直到兩個字串中的字元不相等時,其比較結果就是兩個字串的比較結果,兩個字串中的所有後續字元將不再被比較
比較原理:兩上字元進行比較時,比較的是其ordinal value(原始值),呼叫內建函數ord可以得到指定字元的ordinal value。
與內建函數ord對應的是內建函數chr,呼叫內建函數chr時指定 ordinalvalue 可以得到其對應的字元
#例:比較字串,使用函數ord() print("apple">"app") #True print("apple">"banana") #False print(ord("a"),ord("b")) #a的原始值是97,b的原始值是98 print("a">"b") #False print("c">"b") #True,c的原始值是99 print(ord("華")) #華的原始值是21326 #print(ord("hua")) #報錯:TypeError 檢視原始值的函數只能檢視一個字串,不能檢視多個 #檢視原始值所對應的字串,使用函數chr() print(chr(101)) #e print(chr(102)) #f print(chr(21326)) #華
綜上所述:我們得出了一個程式設計師表白方式
計算出這句話的原始值:
print(ord("我"),ord("喜"),ord("歡"),ord("你")) #返回值:25105 21916 27426 20320 #檢視原始值所對應的字串 p=chr(25105),chr(21916),chr(27426),chr(20320) print(p) #返回值('我', '喜', '歡', '你') print(chr(25105),chr(21916),chr(27426),chr(20320)) #返回值:我 喜 歡 你
字串的切片操作:
str[start:end:step]
字串是不可變型別:
h e l l o , p y t h o n #字串 0 1 2 3 4 5 6 7 8 9 10 11 #索引
st="hello,python" print(st[:5]) #由於沒有指定起始位置,所以輸出從索引0到5的字串,返回值hello print(st[6:]) #由於沒有指定結束位置,所以輸出索引為6之後的字串python st1=st[:5] st2=st[6:] st3="!" newstr=st1+st3+st2 print(newstr) #將字串相加,返回值是hello!python #切片完整寫法 print(st[1:5:1]) #從索引為1的字元開始切到字串為5的字元結束,步長為1,返回值是ello print(st[0:5:2]) #從索引0開始切到索引11的元素,步長為2,返回值hlo print(st[::2]) #不寫起始和結束,只寫步長,就預設從0開始,到末尾結束,返回值hlopto print(st[::-1]) #預設從字串最後一個元素開始,到第一個元素結束,因為步長是負數,往左輸出,返回值nohtyp,olleh print(st[-6::1]) #從索引為-6的元素開始,步長為正數,所以向右輸出,返回值是python
格式化字串的兩種方式:
第一種: %作為預留位置 (%為固定符號,s、i、d、f為實際值)
%s 字串
%i或%d 整數
%f 浮點數
例:
"我的名字叫:%s,今年%d歲了"
第二種:{}作為佔位 ({}第一個元素是填寫需要佔位的元素索引,第二個是填寫保留幾位數。例;{0:3})填寫索引為0的元素,並保留3位數
例:
我的名字叫{0},今年{1}歲了,我真的叫{0},format(name,age)
{}裡填數位就代表format裡元素的索引,format裡的元素會按{}裡的索引填充
name="張三" age=20 print("大家好,我叫%s,今年%d歲"%(name,age)) #大家好,我叫張三,今年20歲 print("大家好,我叫%s,今年%d歲"%("王五",21)) #大家好,我叫王五,今年21歲 #name1=input("輸入你的名字:") #age1=input("輸入你的歲數") #print("我的名字是{0},歲數是{1},別人都叫我{0}".format(name1,age1)) #返回值是我的名字是小華,歲數是20,別人都叫我小華 #沒有指明格式化字串,預設這句就是字串,不會格式化,返回值我的名字是{name},名字是{age} print("我的名字是{name},名字是{age}") #f-string使用f指明要格式化字串,返回值是我的名字是張三,名字是20 print(f"我的名字是{name},名字是{age}") print("%d"%99) #99 print("%10d"%99) # 99 #10表示寬度 print("023456789") #023456789 print("%f"%3.1415926) #3.141593 print("%10.3f"%3.1415926) # 3.142,%10.3f表示輸出3位小數,並保持10個寬度 print("%.3f"%3.1415926) #.3表示保留3位小數,返回值是3.142 print("%d"%3444.1415926) #保留整數,3444 print("{0:.3}".format(3.1415926)) #{0:.3}表示存放索引為0的元素,並保留3位數,返回值3.14 print("{:.3f}".format(3.1415926)) #如果元素較少,不重複使用,第一個元素索引的位置可以省略,.3f表示只保留3位小數,返回值3.14 print("{:10.3f}".format(3.1415926)) #同時設定寬度和精度,寬度是時,精度是保留3位小數,返回值是 3.142
字串在傳輸中會被編碼為二進位制在計算機之間傳輸,傳輸到另一臺計算機之後,資料將會被解碼成可以顯示的字串
編碼與解碼的方式:
編碼:將字串轉換為二進位制資料(bytes)
解碼:將bytes型別的資料轉換成字串型別
#編碼需要用到(encoding) s="舉頭望明月" print(s.encode(encoding="GBK")) #在GBK這種編碼格中,一箇中文佔兩個位元組 #b'xbexd9xcdxb7xcdxfbxc3xf7xd4xc2' print(s.encode(encoding="UTF-8")) #在UTF-8這種編輯格式中,一箇中文佔三個位元組 #b'xe4xb8xbexe5xa4xb4xe6x9cx9bxe6x98x8exe6x9cx88' #解碼(需要用到decode函數) byte1=s.encode(encoding="GBK") #把s變數裡的內容編碼成GBK格式,並賦值給byte1 print(byte1.decode(encoding="GBK")) #把byte1變數裡的GBK格式的編碼內容解碼,返回出舉頭望明月 byte2=s.encode(encoding="UTF-8") #把s變數裡的內容編碼成UTF-8格式,並賦值給byte2 print(byte2.decode(encoding="UTF-8")) #把byte2變數裡的UTF-8格式的編碼內容解碼,返回出舉頭望明月 #嘗試使用GBK格式的編碼內容,再使用UTF-8來解碼內容 byte1=s.encode(encoding="GBK") print(byte1.decode(encoding="UTF-8")) #報錯UnicodeDecodeError: ,編碼格式與解碼格式不符,所以無法解碼 #編碼和解碼必須使用同一種格式,否則無法解碼
到此這篇關於python字串的使用方法介紹的文章就介紹到這了,更多相關python字串內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45