基本資料型別之字串

marsha的世界發表於2022-03-15

一、定義:由一對單引號或雙引號包含的一串字元。字串是不可變型別,字串之間可以進行加法、乘法的運算,運算的本質就是字串拼接。

name="marsha"  
age="49"
print(name+age)
print(name*3)

marsha49
namenamename

二、資料型別轉換:str() 可以將任意資料型別轉換成字串型別。

#list>str
a=[1,2,3]              #list
a=sir([1,2,3])         #str

#dict>str
a=str({"name":"marsha","age"=49})     #str

#int>str
x=str(57)      #str

#float>str
y=str(3.1415)

#tuple>str
m=str((1,2,3))

#set>str
L=str({1,2,3})

三、內建方法

A、取值:字串可以按索引取值,可以取全值,可以部分取值;注意:取值不算空格;且,只能取,不能改 ;正向取從0開始數,反向取從-1開始數。

     語法格式: [ ]

msg="hello world"
print(msg)            #取全值
print(msg[5])         #正向取
print(msg[-3])       #反向取

hello world
w
r

B、切片Slice:是一個取操作,不改變原值,屬於淺拷貝,即:從一個大字串中拷貝出一個字串,正切從0開始數位,空格要算位,切片顧頭不顧尾。  完整切片語法格式:object[start_index:end_index:step]。

step:正負數均可,其絕對值大小決定了切取資料時的‘‘步長”,而正負號決定了“切取方向”,正表示“從左往右”取值,負表示“從右往左”取值。當step省略時,預設為1,即從左往右以步長1取值。

start_index:表示起始索引(包含該索引對應值);該引數省略時,表示從物件“端點”開始取值,至於是從“起點”還是從“終點”開始,則由step引數的正負決定,step為正從“起點”開始,為負從“終點”開始。

end_index:表示終止索引(不包含該索引對應值);該引數省略時,表示一直取到資料“端點”,至於是到“起點”還是到“終點”,同樣由step引數的正負決定,step為正時直到“終點”,為負時直到“起點”。

    總結:

  • 開頭:當步長>0時,不寫預設0。當步長<0時,不寫預設-1

  • 結束:當步長>0時,不寫預設列表長度加一。當步長<0時,不寫預設負的列表長度減一

  • 步長:預設1,>0 是從左往右走,<0是從右往左走

(一)start_index、end_index、step三者可同為正、同為負,或正負混合。但必須遵循一個原則,即:當start_index表示的實際位置在end_index的左邊時,從左往右取值,此時step必須是正數(同樣表示從左往右);當start_index表示的實際位置在end_index的右邊時,表示從右往左取值,此時step必須是負數(同樣表示從右往左),即兩者的取值順序必須相同。

(二)當start_index或end_index省略時,取值的起始索引和終止索引由step的正負來決定,這種情況不會有取值方向矛盾,但正和負取到的結果順序是相反的,因為一個向左一個向右。

(三)step的正負是必須要考慮的,尤其是當step省略時。比如msg[-1:],很容易就誤認為是從“終點”開始一直取到“起點”,原因在於step省略時step=1表示從左往右取值,而起始索引start_index=-1本身就是物件的最右邊元素了,再往右已經沒資料了,因此結果只含有d一個元素。

(四)切片的返回結果型別和切片物件型別一致,返回的是切片物件的子序列。如:對一個列表切片返回一個列表;字串切片返回字串。

切片可以全切,正切,反切,還可以加步長切片。全切用[:],[: :]操作,反向全切用[::-1]操作。

msg="hell0 world"
print(msg[:])     #正向全切
print(msg[::-1])   #反向全切
print(msg[0:8])    #正向切,從第一位切到第7位,即0,1,2,3,4,5,6,7
print(msg[0:8:2])   #正向切,步長為2,從第一位開始,兩位兩位的數,即0,2,4,6,注意,8不能數了,顧頭不顧尾
print(msg[5:0:-1])   #反向切,步長位1,起點為5,終點為0,即5,4,3,2,1,0

#輸出結果
hello world
dlrow olleh
hello wo
hlow
 olleh

C、長度len:獲取字串的長度,即字串的個數,起始位置為1。但凡存在於引號內的都算作字元,含空格

msg="hello world!"
print(len(msg))
>>>12

D、成員運算in  和not in:返回布林值True 或False

msg="hello world"
print(‘hello’ in msg)
print(“hello” not in msg)
>>>
True
False

E、移除字串首尾的空白字元:strip( ) #空白字元如:空格,\ n   ,\ t;

     移除首尾指定字元: strip (指定字元),如strip(*&$@)

      移除左邊的字元:lstrip( )

     移除右邊的字元:rstrip( )

msg=“   hello world \n    ”
res="**&hello world%"
print(msg.strip())
print(res.strip(*$%))
print(res.lstrip(*&)) >>> hello world hello world
hello world%

 F、切分:把一個字串按照某種分隔符號進行切割,得到一個新的列表.

split():從左到右切分,預設以空格作為切分符號;

split('指定符號'):從左到右,按照指定的字元切割字串;切分可以指定次數,如split(' : ' , 1)

rsplit():從右到左的順序對字串進行切分;

rsplit( '指定符號’ ):從右到左切分,按照指定的字元切割字串。

info="my name is marsha"
msg="marsha:49:max"
print(info.split())
print(msg.split(':',1))
>>>
['my'', 'name', 'is','marsha']
['marsha','49:max']

G、用 for in 迴圈取出字元中的每一個字元,含符號和空格

info='marsha:49'
for x  in  info
print(x)
>>>
m
a
r
s
h
a
:
4
9

H、字串改寫:lower( )全改小寫;upper( )全改大寫

msg='MaRsHa'
print(msg.lower())
print(msg.upper())
>>>
marsha
MARSHA

I、判斷字串是否以括號內指定的字元開頭:startswith(' '),結果返回布林值;

    判斷字串是否以括號內指定的字元結尾:endswith (' ')   結果返回布林值。

msg='my name is marsha'
print(msg.startswith('m'))
print(msg.engswith('i'))
>>>
True
False

J、格式化輸出:format

    a:按照位置一一對應傳值:%s可以接收任意值,   %d可以接收傳的數字

info='my name in %s  my age is  %d'  %('marsha','49')
print(info)
>>>
'my name is marsha my age is 49'

  b:按照位置,用空的{}一一對應傳值:{}.format(按中括號個數傳值

info='my name is {} my age is {}'.format('marsha',49print(info)
>>>
'my name is marsha my age is 49'

   c:不依賴位置傳值:{變數名}  .format(變數賦值)

info='my name is {name}{name} my age is {age}'.format(age=49,name='marsha'print(info)
>>>
'my name is marsha marsha my age is 49'

d:把format傳入的多個值當作一個列表,然後按照 {索引}取值

info='my name is {1} my age is {0}'.format('marsha',49print(info)
>>>
'my name is 49 my age is marsha'

K、' 指定分隔符  ’ . join(  ):是從可迭代物件中取出多個字串,然後按照指定的分隔符進行拼接,拼接的結果為字串。它的使用與split( )相反

res='hello'
print('%'.join(res)
>>>
'h%e%l%l%o'

L、變數名.replace( ) :修改字串中舊的字元,可以指定修改個數.

msg='my name is marsha,my age is 49'
print(msg.replace('49','20'))
print(msg.replace('my','your',1))
>>>
'my name is marsha, my age is 20'
'your name is marsha,my age is 49'

M、判斷字串是否為純數字組成用 isdigit()返回布林值

msg='ab3456'
print(msg.isdigit( ))
>>>
False

N、字串需要了解的其他操作(略)

    

 

 

相關文章