python 字符串str 學習總結

1.字符串的表示方式:用引號/雙引號將任意字符串引起來

例如:
a = 'abcd5sd6+f5as.x/dsf'
b = ''abcd5sd6+f5as.x/dsf''

要知道,字符串str是一種一旦創建了就不能修改的類型,下面的增刪改查的改,其實是一種提出來修改以後再重新賦值回去的操作

2.字符串的增刪改查

a.增加

●可以通過直接賦值的方式增加一個字符串

b.刪除

●可以通過 del + 要刪除的字符串 進行刪除 例如: del a

●將字符串按指定順序(從右往左,從左往右)把指定字符給去除掉(指定的字符,如果沒有輸入則默認爲空格)

.lstrip()去除字符串左邊的指定字符
.rstrip()去除字符串左邊的指定字符
.strip()頭和尾都去除
 例如:
a = '123456'
print(a.strip('615')
print(a.lstrip('1'))
print(a.rstrip('6'))			
另外值得注意的是, 這個方法的運算邏輯是:把你指定要去除的那個字符串(即上面例子中的615)拆開,一個元素一個元素的去和原字符串(即123456)做匹配。
比如把615分爲6、1、5三個元素,分別和123456進行兩頭匹配,
左邊:'1'屬於6、1、5中的其中一個,刪掉;接着是2,不屬於6、1、5中的任何一個,所以左邊的停止
右邊:'6'屬於6、1、5中的其中一個,刪掉;接着是5,同樣屬於6、1、5中的其中一個,刪掉;接下來是4,不屬於它們3箇中的任何一個,所以停止,結果就是'234'

c.修改

(這裏爲什麼說了不可修改還能寫着修改呢,因爲這裏所謂的'修改'只是將字符串提出來,將新的字符串(修改後的)再賦值回去的操作)

.format()【將字符串中的佔位符用指定的內容替換】
.format_map()【將字符串中的佔位符用指定的內容替換】
例如:
a = 'my name is {name} , age is {age}.'
print(a.format(name = 'capture',age = 999))
b = 'my name is {0} , age is {1}.'
print(b.format('capture',999))
c = 'my name is {name} , age is {age}.'
print(c.format_map({'name':'capture','age':999}))					

百分號拼接
%s可以接收所有類型的元素,返回字符串
%d只能接收數字
%f接收的是小數

 【這裏的's'可以認爲是'string'的縮寫,同樣是和上面一樣,這裏的%s和%d可以認爲是一個佔位符】

例如:

a = 'my name is %s, my age is %s.' %('capture','999')		#%s還可以用%.2s、%.3s代替,意爲截取字符串的前2、3位
b = '這裏有一個浮點數%.2f' %(92.15674891318913)		#在這裏,%.2f就是保留小數點後兩位小數(四捨五入),當輸入%f時就是不做省略
%'作字符串拼接因爲是一個稍稍複雜的體系,會專門做一章出來總結


.expandtabs()將字符串中的製表符全部用空格代替,使得字符串的長度以指定長度擴展(製表符空格數不指定的話默認是8
此方法會將字符串按照指定的長度掃描,當此長度的字符串內有製表符'\t',則將其替換爲空格且最後包括空格和字符串的總長度等於指定的長度
例如:
a = 'name\t age\t sex\nxiaoming\t 18\t nan\n'
b = 'name\t age\t sex\nxiaoming\t 18\t nan\nxiaoming\t 18\t nan\nxiaoming\t 18\t nan\nxiaoming\t 18\t nan\n'
print(a.expandtabs(30))
print(b.expandtabs(30))

●字符串大小寫互換

.capitalize()首字母大寫
.casefold()整個字符串變小寫【casefold比lower更全面】
.lower()大寫變小寫
.upper()小寫變大寫
.swapcase()大小寫互換

●字符串映射和替換

.maketrans()maketrans()和translate()是配合使用的
.translate() 
.replace() (原字符串裏要替換的字符,新的字符,匹配的最大次數)

例如:

a = '一二三四五'
b = '12345'
c = str.maketrans(a,b)				#建立映射關係
d = b.replace('123','哈哈哈',3)
		
x = '15645641845642873一五三六七九二'
y = x.translate(c)
print(y)
print(d)

d.查詢

首先因爲字符串是可迭代對象,所以我們可以藉助for循環拆解輸出,其次我們還可以通過索引和切片的形式將其輸出

.count()        (指定內容,開始位置,結束位置)計算字符串中指定內容出現的次數
.find()        (指定內容,開始位置,結束位置)在字符串中尋找指定內容並輸出其在字符串中第一次出現的位置,如果沒有找到即輸出-1
.index()和find()一樣的一個方法,區別在於找不到會報錯

a = 'abcdefgabcdefg'
print(a.count('bcd',4,10))
print(a.find('bcd',1,4))
#這裏字符串的計數,用的是"閉區間,開區間"的方式(即'(0,1]'的方式),在計算結束位置的時候應該+1


●字符串的解碼與編碼

在此之前,先說一下encode()和decode()做的事情,在我們編輯一個文件的時候,系統行會把整個文件提到內存中,等到我們修改完畢之後再將整個修改過的文件覆蓋到硬盤裏去,在覆蓋到硬盤去之前,系統會將內存中的文件,按指定的編碼方式(你可以認爲是特定的順序)把文件轉換成二進制,這樣硬盤才能接收。

這裏encode()做的就是模擬把字符串轉換成特定編碼形式的二進制的事情,而decode()就是將二進制字符串解碼成我們能閱讀的文字。

.encode()        (要轉換的編碼,轉換出錯的處理方式)將字符串轉換爲指定的編碼,返回bytes對象
.decode()        (與encode用法類似)將指定的bytes對象轉換爲對應的字符串
.encode()默認的處理方式爲“strict”,而這裏可以寫的所有值爲'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 以及通過 codecs.register_error() 註冊的任何值
例如:
a = '有錢真的是可以爲所欲爲的'
b = a.encode('utf-8')
print(b)
print(b.decode('utf-8'))				

3.字符串str的其他方法

a.設置一個寬度片段並將字符串居中、左、右表示(寬度,填充物)

.center()居中
.ljust()居左
.rjust()居右
例如:
a = 'abcd'
print(a.center(40,'將'))



b.判斷字符串是否以某個指定內容作爲開頭或者作爲結尾(指定內容,開始位置,結束位置)【這裏返回的是bool值】
.endswith()結尾
.startswith()開頭
例如:
a = 'abcdefgh'
print(a.endswith('efg',2,7))
#和上面的count一樣,這兩個方法計算字符串的時候也用的"開區間,閉區間"的方式


c.一大堆判斷的方法【返回bool值】

.isalnum()是否只包含數字以及字母
.isalpha()是否爲字母(包括漢字)
.isdecimal()是否爲十進制數
.isdigit()是否爲數字【比.isdecimal()範圍大】
.isnumeric()是否爲數字值【比.isdigit()範圍大】
.isidentifier()是否爲標識符(例如'_123'和'def'就是返回的true,只要符合變量名的要求就ok)
.isprintable()是否全部都能顯示(例如字符串中的\n\t之類的就是不能顯示的,有這些會輸出false)
.isspace()是否全是空格【\t也會輸出true】
.istitle是否爲標題(首字母全是大寫的英文語句就會被認爲是標題)
.isupper

是否爲大寫字母

.islower()是否爲小寫字母

        d.將字符串中的每一個元素拆開,用指定的內容將其連接成新的字符串(被拆開的字符串)
    .join()
例:
a = '我就是餓死,死外邊,從這裏跳下去,也不會學python\n真香'
b = '_'
print(b.join(a))
c = '我就是餓死,死外邊,從這裏跳下去,也不會學python\n真香'
print('_'.join(c))

#上面是單個字符串,這回是元組

d = ('我就是餓死','死外邊','從這裏跳下去','也不會學python','真香')
print('_'.join(d))

e.將字符串進行分割

.partition() 
.rpartition() 
.split()(指定要刪除的字符串,匹配次數)
.rsplit() 
.splitlines()(ture和false #是否保留換行符)【.split()方法的變種,通過換行符來進行分割】


這裏兩個都是進行字符串分割,-r前綴代表從右往左的分割,split()方法分割字符串以後會把指定的那個字符串丟掉,而partition()方法不會且此方法指定次數只有一次

例如:

a = 'hedwsjfodiaspo'
print(a.partition('d'))
print(a.split('d',2))


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章